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