Évitez que xml échappe des chevrons lors du passage de chaîne xml à System.Xml.Linq.XElement

Je reçois une chaîne de la ssortingng GetXmlSsortingng() ; cela je ne peux pas changer.

Je dois append ceci à un new XElement ("parent" , ... ); XML dans un new XElement ("parent" , ... ); , à la ... région.

Cette chaîne que je reçois est du format suivant.

    ... 

Le résultat final que je veux est que cela soit comme

       ...  

quand je passe juste la chaîne en tant que XElement("root", GetXmlSsortingng()) < et > sont codés pour < et &gt

Lorsque j’essaie XElement.Parse(GetXmlSsortingng()) ou XDocument.Parse(GetXmlSsortingng()) j’obtiens l’exception Il existe plusieurs éléments racine .

Comment puis-je obtenir la sortie requirejse sans sortir des crochets? Qu’est-ce que je rate?

L’option la plus simple est probablement de lui atsortingbuer un élément racine, puis de l’parsingr au format XML:

 var doc = XDocument.Parse("" + text + ""); 

Si vous devez append un élément existant, vous pouvez utiliser:

 var elements = XElement.Parse("" + text + "").Elements(); existingElement.Add(elements); 

Une alternative à la suggestion de Jon serait de créer un XmlReader pour votre fragment et d’parsingr à partir de celui-ci:

 var element = new XElement("parent"); var settings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment }; var text = GetXmlSsortingng(); using (var sr = new SsortingngReader(text)) using (var xr = XmlReader.Create(sr, settings)) { xr.MoveToContent(); while (!xr.EOF) { var node = XNode.ReadFrom(xr); element.Add(node); } } 

Cela serait utile si l’élément ‘parent’ existe déjà, sinon une simple concaténation des nœuds XML à chaque extrémité et une parsing syntaxique seraient plus simples.