Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将xml字符串传递给System.xml.Linq.XElement时,避免尖括号中的xml转义_C#_Xml_Xelement - Fatal编程技术网

C# 将xml字符串传递给System.xml.Linq.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

我从string GetXmlString获取一个字符串;这是我无法改变的

我必须将其附加到新XElement父级中的xml,到。。。区域

我得到的这个字符串的格式如下

<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租金。。。总之,除非您需要将其添加到现有元素中——这仍然很容易,但您的问题并不清楚您实际需要什么。