如何使用XPath表达式仅在Text_2含元素时提取Text节点文本?
XPath条件式提取同层级Text节点文本
针对你的需求,完全可以通过XPath的谓词条件实现,以下是适配不同场景的方案:
核心表达式
场景1:当同层级存在Text_2节点时提取
//Text[../Text_2]/text()
场景2:当同层级Text_2节点包含value_1属性时提取(匹配你尝试的定位逻辑)
//Text[../Text_2[@value_1]]/text()
表达式解释
//Text:全局匹配所有<Text>节点[../Text_2[@value_1]]:谓词筛选条件,检查当前<Text>的父节点下,是否存在带有value_1属性的<Text_2>兄弟节点/text():提取符合条件的<Text>节点的文本内容
精准定位优化
如果需要限定在特定父节点(比如示例中的<SomeNode>)下提取,可使用更具体的路径提升效率:
//SomeNode[Text_2[@value_1]]/Text/text()
用你的XML示例测试上述表达式,会成功提取到<Text>节点的文本text,因为对应的<Text_2>满足属性条件。
内容的提问来源于stack exchange,提问作者blindDriver
相关产品推荐
相关产品推荐

