Xpath 选择节点文本,但排除子节点文本



我有以下XML:

<topic class="Top">
    <title>
        Interesting Article
    </title>
    <subtitle>
        Science & Industry
        <insertedText action="start"/>
            Inside & Out
        <insertedText action="end"/>
        A Profile
    </subtitle>
</topic>

我想使用 xpath 提取字幕的文本,除了两个<insertedText>节点之间的字符串,给出文本"科学与工业概况"。

这是我的最新尝试,但老实说,我很困惑,并意识到这并不排除两个标签之间的文本!任何帮助将不胜感激:

/topic[@class='Top']/*[local-name()='subtitle'][not(descendant::insertedText)]/text()

<insertedText>标签的数量也是可变的,因此<insertedText>标签上可能没有或有多个应忽略的集。

下面提供了可能遇到的 XML 类型的进一步示例:

<topic class="Top">
    <title>
        Interesting Article
    </title>
    <subtitle>
        Science & Industry
        <insertedText action="start"/>
            Inside & Out
        <insertedText action="end"/>
        A Profile
        <insertedText action="start"/>
            An Insiders View
        <insertedText action="end"/>
        The Full Story
    </subtitle>
</topic>

根据@lambo477提供的完整答案如下:

./topic[@class='top']/*[local-name()='subtitle']/text()[1]|/topic[@class='top']/*[local-name()='subtitle']/*[local-name()='insertedText'][@action='end']/following-sibling::node()[1]

您可以尝试以下XPath:

//subtitle/text()[1]|//insertedText[@action="end"]/following-sibling::node()[1]

相关内容

  • 没有找到相关文章

最新更新