C# 将xml字符串传递给System.xml.Linq.XElement时,避免尖括号中的xml转义
我从string GetXmlString获取一个字符串;这是我无法改变的 我必须将其附加到新XElement父级中的xml,到。。。区域 我得到的这个字符串的格式如下C# 将xml字符串传递给System.xml.Linq.XElement时,避免尖括号中的xml转义,c#,xml,xelement,C#,Xml,Xelement,我从string GetXmlString获取一个字符串;这是我无法改变的 我必须将其附加到新XElement父级中的xml,到。。。区域 我得到的这个字符串的格式如下 <tag name="" value =""></tag> <tag name="" value =""></tag> <tag name="" value =""></tag> ... 我想要的最终结果是这样 <parent> <tag
<tag name="" value =""></tag>
<tag name="" value =""></tag>
<tag name="" value =""></tag>
...
我想要的最终结果是这样
<parent>
<tag name="" value =""></tag>
<tag name="" value =""></tag>
<tag name="" value =""></tag>
<tag name="" value =""></tag>
<tag name="" value =""></tag>
...
</parent>
当我将字符串作为xelementrout传递时,GetXmlString
被编码为和>
当我尝试XElement.ParseGetXmlString或XDocument.ParseGetXmlString时,我得到了“有多个根元素”异常
如何在不转义括号的情况下获得所需的输出?我错过了什么 最简单的选择可能是给它一个根元素,然后将其解析为XML:
var doc = XDocument.Parse("<parent>" + text + "</parent>");
如果需要附加到现有元素,可以使用:
var elements = XElement.Parse("<parent>" + text + "</parent>").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节点的简单连接和解析将更加简单。这不是ASCII编码,而是XML转义。我的问题有点误导。我做了一些编辑。我必须坚持给出的最终结果格式。还有多个父元素。您的解决方案在父元素中添加了另一个根元素,对吗?@DanDole:不,它没有-它根本没有父元素。您所要做的就是将root更改为parent,您就得到了完整的结果。不需要新的Xelement租金。。。总之,除非您需要将其添加到现有元素中——这仍然很容易,但您的问题并不清楚您实际需要什么。