繁体   English   中英

在xpath表达式中排除子元素

[英]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表达式将从所有nameopvalue元素中选择文本:

(//name|//op|//value)/text()

更新每个OP请求中的注释:

我只想从滤镜元素中命名,操作,值。

调整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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM