检索html文档中的标记值

时间:2013-11-13 00:25:37

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

如果我有HTML文档,那么检索表中所有标记值的最佳方法是什么?

以下是一个例子:

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  </head>
  <body>
    <table border="1">
      <thead>
        <tr>
          <th>#</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

如何检索thead中的所有值?我也想要检索tbody表行中的所有值。

我曾尝试编写一些XML文档代码,但没有运气。我可以请一些代码来帮助我吗?

更新

这是我正在处理的当前代码:

using (StreamReader sr = new StreamReader(textBoxBugTrackFilename.Text))
{
    String line = sr.ReadToEnd();
    var document = XDocument.Parse(line);

    var headings = document.Element("thead").Elements().Select(x => x.Value);
    foreach (var h in headings)
    {
        MessageBox.Show(h.ToString());
    }
}

我收到此错误:

  

对象引用未设置为对象的实例。

在线:

var headings = document.Element("thead").Elements().Select(x => x.Value);

2 个答案:

答案 0 :(得分:1)

声明.Element("thead")应为

.Descendants("thead").First()

获得null异常的问题是因为元素thead不是html标记的第一级子级。它是后代。

更好,因为即使.Descendants("thead").First()下面有一个子元素tr,也就是th元素。

而是更改您的代码,如下所示:

var headings = document.Descendants("th")
                       .Select(th => th.Value);

答案 1 :(得分:0)

您是否尝试过getElementsByTagName()?

你想只用Javascript解决这个问题吗?或者你可以使用jQuery?

使用jQuery,您可以使用$('table')。find()