直接子文本的XPath与所有后代文本?

时间:2016-08-05 12:58:39

标签: html xml xpath

我试图从以下标记中检索类别层次结构:

<ul class="categories">
    <li>My top level category
        <ul>
            <li>my second level category</li>
        </ul>
    </li>
</ul>

我想使用以下xpath获取顶级类别的名称:

//ul[@class='categories']/li/text()

但这显然会返回该li的所有文本,包括第二级别类别。

如何使用xpath检索顶级类别。您可以假设类别只有两个级别(顶级和第二级别)。

1 个答案:

答案 0 :(得分:0)

  

但这显然会返回该li的所有文本,包括第二级别类别。

实际上,不,//ul[@class='categories']/li/text()只会返回匹配的//ul[@class='categories']/li元素的 直接子文本节点 。在这种情况下:My top level category

如果您指定了以下任一XPath,那么您还选择了my second level category

  • //ul[@class='categories']/li//text()
  • string(//ul[@class='categories']/li)