0

假设我有一个这样的html结构->(注意:在我的代码中没有ID,我只是把它们放在这里,这样更容易解释)

  <body>
    <table id=a>
      <tr>
        <td>
          <table id=b>
            <tr>
              <td>
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
    <table id=c>
      <tr>
        <td>
        </td>
      </tr>
    </table>
  </body>

使用 XPath,//body/table[1]给了我 ID 为“b”的内部表,但我真正想要的是它的第一个孩子(“c”)。一些类似的东西,$("body >table").eq(1)但我使用的是 c#。我如何使用 XPath 做到这一点?

天呐!

编辑:我不能选择 [2] 元素,因为这只是对我遇到的问题的简化解释......

安德烈

4

2 回答 2

1

元素选择器从索引 1 开始(而不是从 0 开始)。因此,您将不得不使用 xpath 查询//body/table[2]

这是屏幕截图的解释。

对于基于 0 的索引节点将为空;

在此处输入图像描述

但是由于索引从 1 开始,对于索引 1 和 2,这些节点将被返回

在此处输入图像描述

在此处输入图像描述

还是不服气?让我们检查一下内部表格​​元素。

首先让我们检查基于 0 的索引(再次它将为空)

在此处输入图像描述

但是,当索引为 1 时,它将返回正确的节点

在此处输入图像描述

于 2012-06-18T07:37:05.117 回答
0

尝试

//body/table[not(ancestor::td)]
于 2012-06-18T05:50:18.640 回答