XPath - 如何选择节点的子元素?

时间:2011-06-15 14:55:03

标签: c# xpath

我有一个包含XHTML表的XmlDocument。我想循环遍历它,一次一行地处理表格单元格,但下面的代码返回嵌套循环中的所有单元格,而不仅仅是当前行的单元格:

XmlNodeList tableRows = xdoc.SelectNodes("//tr");
foreach (XmlElement tableRow in tableRows)
{
    XmlNodeList tableCells = tableRow.SelectNodes("//td");
    foreach (XmlElement tableCell in tableCells)
    {
        // this loops through all the table cells in the XmlDocument,
        // instead of just the table cells in the current row
    }
}

我做错了什么?感谢

1 个答案:

答案 0 :(得分:15)

用“。”开始内部路径。表示您想要从当前节点开始。一个起始的“/”始终从xml文档的根目录进行搜索,即使您在子节点上指定它也是如此。

所以:

XmlNodeList tableCells = tableRow.SelectNodes(".//td");

甚至

XmlNodeList tableCells = tableRow.SelectNodes("./td");

因为那些<td>可能直接位于<tr>之下。