определить несоответствие узлов html / xml XPath, HtmlAgility - PullRequest
0 голосов
/ 18 марта 2011

Как определить, какой узел сломан?Я использую 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 из codebehind для этого решения (не пример xsl / xslt).Заранее спасибо за помощь:)

1 Ответ

0 голосов
/ 18 марта 2011

HtmlAgilityPack самостоятельно исправляет ошибки.Таким образом, предоставленные вами ситуации правильно обрабатываются в методе HtmlDocument.LoadHtml.Например, этот xml <bookstore><title><book>sssss</title</bookstore> будет считаться <bookstore><title><book>sssss</book></title></bookstore>.

Но после загрузки документа вы можете проверить коллекцию doc.ParseErrors, чтобы проанализировать некоторые ошибки.Также следует учитывать, что отсутствующий закрытый тег (<book><title>ssss</book>) не является ошибкой, а отсутствующий «>» равен.

Upd

1) Пропущенный закрывающий тегне ошибкаСломанный тег - ошибка.

2) Load и LoadHtml имеют одинаковое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...