确定html / xml节点不一致XPath,HtmlAgility

时间:2011-03-18 09:59:22

标签: c# xml-parsing

如何确定哪个节点坏了? 我使用asp.net,C Sharp,XPath,HtmlAgility Pack。

例如 - 结束“< \ book”标记缺少“>”:

<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book

</bookstore>

另一个例子 - 结束&lt; \ title&gt;标签丢失:

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML
  <price>39.95</price>
</book>

</bookstore>

所以,当我使用CS,HtmlAgility&amp; XPath像:

HtmlDocument doc = new HtmlDocument();
HtmlNode root = doc.DocumentNode;
root.SelectNodes("//book")
//or
root.SelectNodes("//book/title")

我想确定哪个节点“已损坏”,并采取措施修复节点。

我想从codebehind使用csharp / asp.net这个解决方案(而不是xsl / xslt示例)。在此先感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

HtmlAgilityPack自行修复错误。 因此,您在HtmlDocument.LoadHtml方法中正确处理您提供的情况。 例如,此xml <bookstore><title><book>sssss</title</bookstore>将被视为<bookstore><title><book>sssss</book></title></bookstore>

但是在加载文档后,您可以查看doc.ParseErrors集合来分析一些错误。此外,您应该考虑到缺失的封闭标记(<book><title>ssss</book>)不是错误,并且缺少“&gt;”是

<强> UPD

1)错过结束标记不是错误。破碎的标签是错误的。

2)Load和LoadHtml具有相同的行为。