我有一个包含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
    }
}

我究竟做错了什么?谢谢

最佳答案

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

所以:

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

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

因为这些<td>可能直接在该<tr>下。

关于c# - XPath-如何选择节点的子元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6359737/

10-10 23:55