C#XDoc解析XML字符串

时间:2013-04-22 14:00:07

标签: c# xml parsing

我正在通过XML API接收数据,它正在返回如下节点:

<?xml version='1.0' encoding='utf-8' ?>

<location>
  <name>&Oslash;L Shop</name>
</location>

我无法控制响应,但我正在尝试将其加载到由于无效字符而失败的XDocument中。

我能做些什么来使这个负载正常吗?我希望尽可能保持解决方案的一般性,因为可能存在其他无效字符。

思想?

3 个答案:

答案 0 :(得分:1)

您可以使用更能容忍无效输入的html解析器。例如; (使用HtmlAgilityPack)此代码可以正常运行。

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(xml);
var name = doc.DocumentNode.Descendants("name").First().InnerText;

答案 1 :(得分:1)

您无法在XDocument.Parse输入文本中使用“&amp; ”符号。将其替换为“&amp; amp ;” ,像这样

<?xml version='1.0' encoding='utf-8' ?>

<location>
  <name>&amp;Oslash;L Shop</name>
</location>

答案 2 :(得分:0)

为什么不在将响应加载到XDocument之前转义任何无效的XML字符?你可以使用正则表达式,应该相对简单。

请参阅escape invalid XML characters in C#