的XPath选择第一节点当在节点

的XPath选择第一节点当在节点

问题描述:

我有一个这样的XML部分之前没有PCDATA:的XPath选择第一节点当在节点

  1. <p><bold>Some Text</bold> some more content and text...</p>

  1. <p>Some Text and something <bold>bold</bold> within and more content...</p>
  2. 我在寻找一个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元素。