![](/img/trans.png)
[英]XPATH expression to output parent node and matched child node excluding unmatched child node
[英]Excluding child elements in xpath expression
HI有以下xml。
<filters>
<filter>
<field>
<name>empId</name>
<type>int</type>
</field>
<op>in</op>
<value>eID</value>
<valueType>PERI</valueType>
</filter>
<filter>
<field>
<name>desc</name>
<type>string</type>
</field>
<op>in</op>
<value>dbDesc</value>
<valueType>PERI</valueType>
</filter>
</filters>
我只想检索“名称”元素,“运算”和“值”元素。 Iam使用以下xpath表达式。 但无法排除“字段”元素下的“类型”节点。
//filter//*[not(self::valueType)] and [not(following-sibling::type)]//text()
我的输出应为:
empId
in
eID
desc
in
dbDesc
有什么帮助吗?
以下XPath表达式将从所有name
, op
或value
元素中选择文本:
(//name|//op|//value)/text()
我只想从滤镜元素中命名,操作,值。
调整XPath,就像您在评论中提到的那样:
(//filters//name|//filters//op|//filters//value)/text()
或者,更有效的方法(只要将其收紧,通常情况下不会丢失任何匹配项):
(/filters/filter/field/name|/filters/filter/op|/filters/filter/value)/text()
这应该工作:
//filter//*[self::name or self::op or self::value]/text()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.