Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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字符串_C#_.net_Xml_Xsd - Fatal编程技术网

C# 需要解析xml字符串

C# 需要解析xml字符串,c#,.net,xml,xsd,C#,.net,Xml,Xsd,我需要解析一个xml字符串(.NET,C#),不幸的是,它的格式不正确。。我得到的xml流是 <fOpen>true</fOpen> <ixBugParent>0</ixBugParent> <sLatestTextSummary></sLatestTextSummary> <sProject>Vantive</sProject> <ixArea>9</ixArea> tru

我需要解析一个xml字符串(.NET,C#),不幸的是,它的格式不正确。。我得到的xml流是

<fOpen>true</fOpen>
<ixBugParent>0</ixBugParent>
<sLatestTextSummary></sLatestTextSummary>
<sProject>Vantive</sProject>
<ixArea>9</ixArea>
true
0
有利的
9
我尝试过使用xml读取器,但它崩溃了,因为它认为,并且理所当然地认为,无论它尝试解析什么,都有2个节点元素

有什么我可以做的吗?我无法更改XML,因为我无法控制发送XML的代码

如有任何帮助,将不胜感激

谢谢和问候


Gagan Janjua

您得到的是格式良好的XML片段,但正如您所指出的,不是格式良好的XML文档。你能吗

  • 在返回的元素周围包装一个顶级元素?或
  • 从shell XML文档中引用返回的XML片段作为外部实体,并将shell文档传递给XML读取器

我认为您可以在一个
XmlTextReader
重载中使用
XmlParserContext
来指定节点类型为
XmlNodeType.Element
,类似于MSDN()中的示例:

XmlTextReader tr=新的XmlTextReader(“abc
qrt
,XmlNodeType.Element,null);
while(tr.Read()){
WriteLine(“节点类型:{0}节点名称:{1}”,tr.NodeType,tr.Name);
}

这比我提出的答案要简单。是的,我在@larsH做了。我必须围绕被重复的元素包装一个顶级论点。。这种想法一直存在。。。但是,你不认为,如果我这样做并读回字符串,它会增加开销吗??因为我必须在生产中编写代码,所以我必须这样做,尽管我认为这可能不是一个优雅的解决方案。。你说???@user412628:是的,这会增加一点开销。如果您在.NET中解析XML,我认为使用@Michael建议的XmlParserContext会更优雅。
XmlTextReader tr = new XmlTextReader("<element1> abc </element1> 
  <element2> qrt </element2>
  <?pi asldfjsd ?>
  <!-- comment -->", XmlNodeType.Element, null);

while(tr.Read()) {
    Console.WriteLine("NodeType: {0} NodeName: {1}", tr.NodeType, tr.Name);
    }