C#XDOC解析XML字符串
问题描述:
我通过XML API接收数据和它的返回像节点以下:C#XDOC解析XML字符串
<?xml version='1.0' encoding='utf-8' ?>
<location>
<name>ØL Shop</name>
</location>
我有过反应无法控制,但我试图将其加载到一个XDocument其中由于无效字符而失败。
有什么我可以做的,使这个负载正确?我想尽可能保持解决方案的一般性,因为可能存在其他无效字符。
想法?
答
您可以使用HTML解析器这是更宽容的无效投入。例如; (使用HtmlAgilityPack)这段代码没有任何问题。
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(xml);
var name = doc.DocumentNode.Descendants("name").First().InnerText;
答
你不能使用XDocument.Parse输入文本 “&” 的象征。将其替换为“& amp;” ,像这样
<?xml version='1.0' encoding='utf-8' ?>
<location>
<name>&Oslash;L Shop</name>
</location>
+0
这可能不是正确的结果。我希望它应该是'
+0
'&'仍然是XML中未知的实体规范 – 2013-04-22 14:45:09
老实说,你应该查询xml文件的生产者来生成一个有效的xml文件。您可以成功修补输入,但这是不可行的解决方案。 – 2013-04-22 14:06:24
我同意。所使用的编码仅在HTML中有效,而不在XML文件中。这个字符应该被编码为,例如'Ø'。 – 2013-04-22 14:11:37
@SteveB我同意这里的* real *解决方案是为了得到固定的答案。但是,我不会说它不是一个可行的解决方案。在处理之前,从响应中取消任何无效字符非常容易。在未来,**如果第三方确实解决了问题,它就会变成一个完整的检查。在技术上,这也是未来的证明,因为他们也可以重新介绍那些检查将会发现的问题。 – James 2013-04-22 14:11:55