XPath可选字段

时间:2015-04-09 18:00:45

标签: xml xpath

我需要编写一个XPATH表达式,它将以下列方式处理可选元素:如果找到该元素,则返回该元素,如果找不到,则返回一个空值(或者某些常量也可以)

带有可选元素的示例XML"地址":

<account><name>Foobar</name><address>34 State St</address></account>
<account><name>Simpson</name></account>
<account><name>Cole</name><address>45 Main St</address></account>

需要返回:

"34 State St",,"45 Main St"
or
"34 State St",constant,"45 Main St"

1 个答案:

答案 0 :(得分:2)

在XPath 2.0中,使用if

很容易
account/(if (address) then string(address) else '')

但是在XPath 1.0中,单个表达式不可能,因为XPath 1.0没有原子值有序序列的概念 - 它只能选择节点集。您可以使用XPath 1.0表达式提取account元素集,但是您需要迭代主机环境中的那组节点,并分别查找每个节点的address