使用XQuery 1.0筛选含指定子元素的album节点并提取对应content
XQuery 1.0 解决方案:提取特定album下的目标content元素
输入XML
<Body> <album> <contents> <content>correct</content> <content>hardcore</content> </contents> </album> <album> <contents> <content>incorrect</content> <content>punk</content> </contents> </album> <album> <contents> <content>incorrect</content> <content>rock</content> </contents> </album> </Body>
需求说明
查找包含子元素<content>correct</content>的album节点,并提取该节点下的<content>hardcore</content>元素。注意album节点顺序可能变化,因此不能用first()或[1]这类位置定位方式。
完整XQuery代码
/Body/album[contents/content/text() = 'correct']/contents/content[text() = 'hardcore']
代码说明
- 先通过
/Body/album[contents/content/text() = 'correct']筛选出符合条件的album节点——只要其contents下存在文本为correct的content子元素,不管这个album在什么位置都能匹配到。 - 接着在筛选出的
album节点内部,通过/contents/content[text() = 'hardcore']直接提取目标content元素,全程基于内容匹配,和节点顺序无关。
如果存在多个同时包含correct和hardcore的album节点,上述代码会返回所有符合要求的content元素;若仅需第一个匹配结果,可在代码末尾添加[1](此操作是对结果集的筛选,不依赖原节点顺序)。
内容的提问来源于stack exchange,提问作者The real Van Gogh
相关产品推荐
相关产品推荐

