将xml字符串传递给System.Xml.Linq.XElement时,避免使用尖括号的xml转义

我从string GetXmlString()得到一个字符串; 我无法改变。

我必须将它附加到new XElement ("parent" , ... );的xml new XElement ("parent" , ... ); ,到...区域。

我得到的这个字符串具有以下格式。

    ... 

我想要的最终结果是这样的

       ...  

当我只是传递字符串作为XElement("root", GetXmlString()) <>被编码为<&gt

当我尝试XElement.Parse(GetXmlString())XDocument.Parse(GetXmlString())我得到了多个根元素exception。

如何在不转移括号的情况下获得所需的输出? 我错过了什么?

最简单的选择可能是它一个根元素,然后将其解析为XML:

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

如果需要附加到现有元素,可以使用:

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

Jon的建议的替代方法是为您的片段创建一个XmlReader并从中解析:

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

如果’parent’元素已经存在,这将是有用的,否则每端的XML节点的简单连接和解析将更简单。