加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 具有多个谓词的Xpath表达式

发布时间:2020-12-16 08:09:35 所属栏目:百科 来源:网络整理
导读:我试图构建一个复杂的xpath表达式,将回答以下条件。 从下面的XML数据,返回用户实体,其中: 他的登录名是“user1” 他的名字是“用户1” 他有2个不同的配置文件值,“operator”和“admin”(我不知道前面的确切顺序) user loginuser1/login nameUser 1/nam
我试图构建一个复杂的xpath表达式,将回答以下条件。

从下面的XML数据,返回用户实体,其中:

>他的登录名是“user1”
>他的名字是“用户1”
>他有2个不同的配置文件值,“operator”和“admin”(我不知道前面的确切顺序)

<user>
  <login>user1</login>
  <name>User 1</name>
  <profile>
    <value>admin</value>
    <id>2</id>
    <description>admin users</description>
  </profile>
  <profile>
    <value>operator</value>  
    <id>1</id>
    <description>Operator</description>
  </profile>
</user>

<user>
  <login>user2</login>
  <name>User 2</name>
  <profile>
    <value>admin</value>
    <id>4</id>
    <description>admins users</description>
  </profile>
  <profile>
    <value>poweruser</value>  
    <id>5</id>
    <description>power users</description>
  </profile>
</user>

</root>

有人可以为这种情况提供一个例子吗?

编辑:添加了一个复杂的配置文件实体

以下应该做你所做的:
/root/user[login='user1' and 
           name='User 1' and 
           profile='admin' and
           profile='operator']

为配置文件值进行两个测试可能看起来很奇怪,但是由于有多个配置文件节点,所以只要至少一个节点与测试匹配,则条件将被满足。

你可以直接比较配置文件直接到一个字符串的原因,即使它实际上是一个节点是一个元素节点的字符串值是它的所有后代串联在一起的字符串值,在这种情况下,只是值的内容。

如果配置文件包含比元素更多的元素,则必须使用稍微更复杂的谓词测试来根据值确定匹配配置文件节点的存在(这应该与您更新的问题一起使用):

/root/user[login='user1' and 
           name='User 1' and 
           profile[value='admin'] and
           profile[value='operator']]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读