Найти значение InnerHtml с помощью XpathNavigator и HtmlAgilityPack

c# html-agility-pack xpathnavigator

Вопрос

часть test.xml

<tr class="a"> 
    <td align="left" nowrap="true">desc1</td> 
    <td align="left">desc2</td>  
    <td>desc3</td>  
    <td align="left">desc4</td> 
    <td align="left">desc5</td>
    <td>desc6</td> 
    <td>desc7</td> 
    <td>desc8</td>
    <td class="nr">desc9</td>
</tr>

// создаем XpathNavigator для получения последнего значения внутри td, т.е. desc9

> HtmlDocument document = new HtmlDocument();
        document.Load(Server.MapPath("test.xml"));

        XPathNavigator xPathNavigator = document.CreateNavigator();
        object o = xPathNavigator.Evaluate("/table[1]/tbody[1]/tr[2]/td[9]");

Отладчик показывает, что значение может быть оценено как ниже, что очень громоздко.

((HtmlAgilityPack.HtmlNodeNavigator)((new System.Linq.SystemCore_EnumerableDebugView(((MS.Internal.Xml.XPath.XPathSelectionIterator)(o)))).Items[0])).Value

Каков наилучший способ добраться до desc9?

Принятый ответ

Я не использовал XPathNavigator, но вот аналогичное решение с типом SelectNodes / SelectSingleNode и HTML Agility Pack.

string xPathSearch = "/table[1]/tbody[1]/tr[2]";
HtmlNode tableRow = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableRow.ChildNodes[9].InnerText;

ИЛИ

string xPathSearch = "/table[1]/tbody[1]/tr[2]/td[9]";
HtmlNode tableColumn = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableColumn.InnerText;

FYI - Лучшая документация по пакету «Ловкость HTML» - это образцы, включенные в источник. Не знаете, почему это не отдельная загрузка в документации.


Популярные ответы

Я думаю, вы идете об этом неправильно.

Я считаю, что все, что вам нужно сделать, это нечто вроде:

document.DocumentNode.SelectSingleNode("/table[1]/tbody[1]/tr[2]/td[9]");

Я не могу найти онлайн-копию документов, чтобы связать вас, но вы можете проверить документы, найденные по адресу http://htmlagilitypack.codeplex.com/releases/view/44954 для получения дополнительной информации.

Кроме того, если вы просто читаете XML, есть ли причина, по которой вы используете пакет html agility, или это только ваш тестовый файл, который является истинным XML?



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow