我有以下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>
节点之间的字符串,给出文本“Science&amp; Industry A Profile”。
这是我最近的尝试,但说实话,我很难过,并意识到这并不排除两个标签之间的文字!任何帮助将不胜感激:
/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]
答案 0 :(得分:0)
您可以尝试以下XPath:
//subtitle/text()[1]|//insertedText[@action="end"]/following-sibling::node()[1]