将xml字符串传递给System.Xml.Linq.XElement时,避免使用尖括号的xml转义
我从string GetXmlString()
得到一个字符串; 我无法改变。
我必须将它附加到new XElement ("parent" , ... );
的xml new XElement ("parent" , ... );
,到...
区域。
我得到的这个字符串具有以下格式。
...
我想要的最终结果是这样的
...
当我只是传递字符串作为XElement("root", GetXmlString())
<和>被编码为<
和>
当我尝试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节点的简单连接和解析将更简单。