首页 > 解决方案 > HtmlAgilityPack 中的 LINQ-to-XML 以选择 TR

问题描述

这对某人来说可能很简单,所以如果你是那个人,请看看这个:

我有一个包含更多行的表,但我想根据给定的文本提取一行,这里是表摘录:

 ... <tr>
    <td class="border-1px-solid-black" colspan="1">
      <img onclick="PopupCenter('{{InvoiceDetails.0.Link}}')" style="max-height: 35px; max-width: 35px; cursor: pointer;" src="/images/report.png" /></td>
    <td class="border-1px-solid-black" colspan="11">
      <p>{{InvoiceDetails.0.Description}}</p>
    </td>
    <td class="border-1px-solid-black" colspan="2" style="text-align: right;">
      <p>{{InvoiceDetails.0.Quantity}}</p>
    </td>
    <td class="border-1px-solid-black" colspan="2" style="text-align: right;">
      <p>{{InvoiceDetails.0.Amount}}  </p>
    </td>
  </tr>...

我正在使用 HtmlAgilityPack 和 VB.NET,我想获得在任何元素中包含 InvoiceDetails.0 的 TR。

怎么做?

谢谢!

标签: vb.netlinq-to-xmlhtml-agility-pack

解决方案


我将发布完成此操作的方式,但这不是最短的方式:

          nodes = doc.DocumentNode.SelectNodes("//*[text()[contains(., '" + find + "')]]")
          If nodes IsNot Nothing Then
            node = nodes(0)
            While node.ParentNode.Name <> "tr"
              node = node.ParentNode
            End While
            node = node.ParentNode
            'and here I have reference to TR node
            Next
          End If

如果你有更短的方法,请写在这里。


推荐阅读