多值中的XPath搜索

时间:2015-03-10 13:43:04

标签: xml search xpath

我有一个XML:

<user id="1">
  <first_name>Max</first_name>
  <last_name>Mustermann</last_name>
</user>

如何在搜索时创建XPath以获取user_id&#34; Max Mustermann&#34;

由于

2 个答案:

答案 0 :(得分:4)

如果该示例XML准确,包括缩进(即在结束</first_name>和开放<last_name>标记之间只有一个空白文本节点),那么你可以简单地使用normalize-space()

//user[normalize-space() = 'Max Mustermann']/@id

这是有效的,因为XPath中元素节点的字符串值根据定义是其所有后代文本节点的串联,并且将normalize-space应用于该值将剥离前导和尾随空格并折叠任何内部运行将空白字符缩小到一个空格。

如果XML不包含那些空格文本节点,则user元素的normalize-space()值将为MaxMustermann,因此您必须为手工比较构建价值:

//user[normalize-space(concat(first_name, ' ', last_name)) = 'Max Mustermann']/@id

答案 1 :(得分:3)

这样的东西......?

//user[first_name='Max' and last_name='Mustermann']/@id