Как работает HtmlNodeNavigator?

Как добиться

XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodeset = navigator.Select(xpath);

while (nodeset.MoveNext())
{
    // Clone iterator here when working with it.
    Do something
}

в пакете гибкости html? Документации не так много. Я искал в сети. Я не могу достать образец. Нет HtmlPathNodeIterator. HtmlNodeNavigator navigator = Html.CreateNavigator () не работает.

заранее спасибо


person Trio Cheung    schedule 01.09.2013    source источник


Ответы (1)


Самый простой способ выбрать узлы - это ... не использовать навигатор, а вместо этого использовать методы HtmlNode SelectNodes и SelectSingleNodes. Нравится:

HtmlDocument doc = new HtmlDocument();
doc.Load("books.html");
foreach(HtmlNode node in doc.DocumentElement.SelectNodes(xpath))
{
   ...
}
person Simon Mourier    schedule 01.09.2013
comment
это хорошее решение, но после одного изменения все узлы станут нулевыми указателями. как я могу этого избежать? - person Trio Cheung; 01.09.2013
comment
что ты имеешь в виду? если SelectsNodes возвращает ноль, это означает, что нет узла, соответствующего выражению xpath? - person Simon Mourier; 01.09.2013
comment
То есть я могу читать только выбранные узлы. Но никаких манипуляций делать нельзя. т.е. Вы не можете удалять какие-либо узлы, перемещать любые узлы. Если вы это сделаете, все остальные выбранные узлы станут нулевыми. - person Trio Cheung; 02.09.2013