【问题标题】:Using LINQ to XML to traverse an HTML table使用 LINQ to XML 遍历 HTML 表
【发布时间】:2010-09-13 16:56:34
【问题描述】:

因此,我可以轻松地使用 LINQ to XML 来遍历正确设置的 XML 文档。但是我在弄清楚如何将其应用于 HTML 表格时遇到了一些问题。这是设置:

<table class='inner'
       width='100%'>
    <tr>
        <th>Area</th>
        <th>Date</th>
        <th>ID</th>
        <th>Name</th>
        <th>Email</th>
        <th>Zip Code</th>
        <th>Type</th>
        <th>Amount</th>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
    </tr>
</table>

基本上,行数可能无穷无尽,我希望能够逐行检查数据。谁能指出我正确的方向?我应该为此使用 LINQ 以外的工具吗?

编辑:对不起,我的问题是我试图从中收集数据的页面是 HTML,而不是 XML。确切的扩展名是“.aspx.htm”。这似乎没有正确加载,即使它加载了,我也不确定如何遍历 HTML 页面,因为在我试图从中获取数据的表之前有一个表。

例如,这是我试图从中获取信息的表的 XPATH:

/html/body/form/div[3]/table/tbody/tr[5]/td/table

【问题讨论】:

  • 您可能需要重新表述您的问题。我没有看到您上面描述的障碍是什么......导致答案是使用.Elements()/循环的变体,即使您提到您之前使用过 linq to xml。
  • @eglasius 是的,谢谢你的提示。我真的没有解释我的主要问题是什么。已编辑。

标签: c# html xml linq linq-to-xml


【解决方案1】:
XElement myTable = xdoc.Descendants("table").FirstOrDefault(xelem => xelem.Attribute("class").Value == "inner");
IEnumerable<IEnumerable<XElement>> myRows = myTable.Elements().Select(xelem => xelem.Elements());

foreach(IEnumerable<XElement> tableRow in myRows)
{
    foreach(XElement rowCell in tableRow)
    {
        // tada..
    }
}

【讨论】:

    【解决方案2】:

    一旦你有一个带有&lt;table&gt; 的XElement,你就可以循环遍历它的子元素Elements()

    【讨论】:

      【解决方案3】:

      linq 就像 sql 它执行基于集合的操作。

      您希望专注于使用 foreach 循环来迭代选定的 xelements 集 -

      【讨论】:

        猜你喜欢
        • 2021-06-03
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多