【问题标题】:vb.net: Get data from Xelement <table></table>vb.net:从 Xelement <table></table> 获取数据
【发布时间】:2014-10-06 09:52:27
【问题描述】:

我已经从我的 SharePoint 网站加载了一个 Xelement。

Dim elTable2 As XElement = <table border="1" id="table2" style="font-size:1em;border-collapse:collapse;display:inline;width:100%">
<tbody>
    <tr class="ms-rteTableHeaderRow-default" style="text-align:center">
        <th class="ms-rteTableHeaderFirstCol-default">​</th>
        <th class="ms-rteTableHeaderOddCol-default">LAN IP​</th>
        <th class="ms-rteTableHeaderEvenCol-default">Username​</th>
        <th class="ms-rteTableHeaderOddCol-default">Password​</th>
        <th class="ms-rteTableHeaderEvenCol-default">Port​</th>
        <th class="ms-rteTableHeaderOddCol-default">OS​</th>
        <th class="ms-rteTableHeaderEvenCol-default">Extra Info​</th>
     </tr>
     <tr class="ms-rteTableOddRow-default" style="text-align:center">
        <th class="ms-rteTableFirstCol-default">Netasq</th>
        <td class="ms-rteTableOddCol-default"></td>
        <td class="ms-rteTableEvenCol-default"></td>
        <td class="ms-rteTableOddCol-default">​</td>
        <td class="ms-rteTableEvenCol-default">​</td>
        <td class="ms-rteTableOddCol-default">​</td>
        <td class="ms-rteTableEvenCol-default">​</td>
     </tr>
  </tbody>
</table>

该表的行数未知。我可以遍历所有行并检查第一列中的数据吗?

【问题讨论】:

    标签: vb.net xelement


    【解决方案1】:

    您可以利用 Html Agility Pack 来实现此目的。它是一个 .NET 代码库,允许解析 HTML 内容并支持纯 XPATH 或 XSLT。

    示例

    Dim table As XElement = <table border="1" id="table2" style="font-size:1em;border-collapse:collapse;display:inline;width:100%">
                                    <tbody>
                                        <tr class="ms-rteTableHeaderRow-default" style="text-align:center">
                                            <th class="ms-rteTableHeaderFirstCol-default">​Val</th>
                                            <th class="ms-rteTableHeaderOddCol-default">LAN IP​</th>
                                            <th class="ms-rteTableHeaderEvenCol-default">Username​</th>
                                            <th class="ms-rteTableHeaderOddCol-default">Password​</th>
                                            <th class="ms-rteTableHeaderEvenCol-default">Port​</th>
                                            <th class="ms-rteTableHeaderOddCol-default">OS​</th>
                                            <th class="ms-rteTableHeaderEvenCol-default">Extra Info​</th>
                                        </tr>
                                        <tr class="ms-rteTableOddRow-default" style="text-align:center">
                                            <td class="ms-rteTableFirstCol-default">Netasq</td>
                                            <td class="ms-rteTableOddCol-default"></td>
                                            <td class="ms-rteTableEvenCol-default"></td>
                                            <td class="ms-rteTableOddCol-default">​</td>
                                            <td class="ms-rteTableEvenCol-default">​</td>
                                            <td class="ms-rteTableOddCol-default">​</td>
                                            <td class="ms-rteTableEvenCol-default">​</td>
                                        </tr>
                                    </tbody>
                                </table>
    
    
        Dim html = New HtmlDocument()
        html.LoadHtml(table.ToString())
        For Each row In html.DocumentNode.SelectNodes("//tr[position()>1]")  'XPath expression to select table rows and skip table header
    
            Dim cell As HtmlNode = row.SelectSingleNode("td[1]")  'Get cell for first column
            Console.WriteLine(cell.InnerText)
        Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多