Как получить значение из определенной ячейки C # Html-Agility-Pack

c# html-agility-pack html-parsing

Вопрос

Как получить значение из определенного места во второй таблице в документе. Мне нужно значение из второго и нижнего столбцов ячейки в html-документе ниже. Как мне это сделать.

<html>
<head>
<title>Tables</title>
</head>
<body>
<table border="1">
  <tr>
    <th>Room</th>
    <th>Location</th>
  </tr>
  <tr>
    <td>Paint</td>
    <td>A4</td>
  </tr>
  <tr>
    <td>Stock</td>
    <td>B3</td>
  </tr>
  <tr>
    <td>Assy</td>
    <td>N9</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <th>Product</th>
    <th>Mat'l</th>
    <th>Weight</th>
    <th>Size</th>
  </tr>
  <tr>
    <td>Cover</td>
    <td>Plastic</td>
    <td>4</td>
    <td>16</td>
  </tr>
  <tr>
    <td>Retainer</td>
    <td>Steel</td>
    <td>12</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Pin</td>
    <td>Bronze</td>
    <td>18</td>
    <td>7</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <th>Process</th>
    <th>Location</th>
    <th>Number</th>
  </tr>
  <tr>
    <td>Trim</td>
    <td>S2</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Finish</td>
    <td>D2</td>
    <td>3</td>
  </tr>
</table>
</body>
</html>

Благодаря!

Также ... Пожалуйста, помогите новичкам !!! Пожалуйста, направьте меня на ресурс, который поможет мне понять синтаксис Html-Agility-Pack (HAP). У меня есть CHM-файл для HAP - я пытался его использовать, и я попытался использовать VS-браузер объекта для HAP, но для меня это слишком загадочно.

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

Html Agility Pack оснащен оценщиком XPATH, который следует за синтаксисом .NET XPATH над разобранными узлами HTML. Обратите внимание, что выражение XPATH, используемое в этой библиотеке, требует, чтобы элементы и имена атрибутов были строчными, независимо от исходного HTML-источника.

Итак, в вашем случае вы можете получить ячейку для третьего столбца, 2-й строки, 2-й таблицы с выражением типа:

HtmlDocument doc = new HtmlDocument();
doc.Load(YouTestHtmlFilePath);

HtmlNode node = doc.DocumentNode.SelectSingleNode("//table[2]/tr[2]/td[3]");
Console.WriteLine(node.InnerText); // will output "4"

//table означает, что любой элемент TABLE рекурсивно из root. [2] означает вторую таблицу.

/tr означает получение любого элемента TR из этой текущей таблицы. [2] означает вторую строку.

/td означает получить любой элемент TD из этой текущей строки. [3] означает взять 3-ю ячейку.

Здесь вы можете найти хорошие учебники по XPATH: Учебное пособие по XPath



Related

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