的XPath选择第一节点当在节点
问题描述:
我有一个这样的XML部分之前没有PCDATA:的XPath选择第一节点当在节点
<p><bold>Some Text</bold> some more content and text...</p>
或
<p>Some Text and something <bold>bold</bold> within and more content...</p>
我在寻找一个XPath
expre只有在<p>
(如第一个示例)中的第一个内容时才会返回元素<bold>
,并且在标记之前出现PCDATA
时不返回任何内容。
我可以使用p/bold[1]
,但返回这两个选项的结果。
我很感激任何建议!
答
你可以使用
//p/bold[1][not(preceding-sibling::node())]
对于所有p
元素,找到第一个bold
元素,只有当它不具有前同辈 - 即不PCDATA才出现。
你也可以检查p
元素的第一个子节点,并检查它是否是一个bold
元素,这有可能更快地执行,如果有很多孩子:
//p/node()[1][name() = 'bold']
答
您可以使用p/node()[1][self::bold]
选择第一个子节点,如果它是bold
元素。