簡體   English   中英

確定html / xml節點不一致XPath,HtmlAgility

[英]determine html/xml node inconsistency XPath, HtmlAgility

如何確定哪個節點壞了? 我使用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>

另一個示例-缺少<\\ title>結束標記:

<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和XPath時:

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

我想確定哪個節點“損壞”,並采取措施修復該節點。

我想使用來自代碼隱藏的csharp / asp.net來解決此問題(不是xsl / xslt示例)。 在此先感謝您的幫助 :)

HtmlAgilityPack可以自行修復錯誤。 因此,在HtmlDocument.LoadHtml方法中可以正確處理您提供的情況。 例如,此xml <bookstore><title><book>sssss</title</bookstore>將被視為<bookstore><title><book>sssss</book></title></bookstore>

但是在加載文檔后,您可以簽出doc.ParseErrors集合來分析一些錯誤。 另外,您還應考慮到丟失的關閉標記( <book><title>ssss</book> )不是錯誤,而丟失的“>”是錯誤。

更新

1)缺少結束標記不是錯誤。 標記損壞是錯誤的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM