输入XML:
<root><timestamp>2015-12-2</timestamp><record><e1>123</e1><e2>12366t6</e2></record><record><e1>123</e1><e2>0000</e2></record></root>
输出XML:
<root><timestamp>2015-12-2</timestamp><record><e1>123</e1><e2>0000</e2></record></root>
有没有人可以帮助找到可用于实现上述输出的XPath表达式?我试过了$body/root[/record[2]]
,但它没有用。
答案 0 :(得分:0)
方括号[]
包含谓词(类似于SQL查询中的WHERE
)。
您的表达式$body/root[/record[2]]
可以视为
body
root
,但仅限于位置2上有record
你可能想要的是$body/root/record[2]
,这是
body
root
record
,但仅返回第二个record
如果您无法指定修复位置,则可以执行以下操作:
$body/root/record[(e2/text())[1]='0000']
哪个是
body
root
record
,但仅返回e2
具有给定值的那些您希望从XML中获取两个不同的组件。您必须使用两个XPath
表达式
您可能会使用类似这样的内容
/root/timestamp | /root/record[2]
或者
<root>
{/root/timestamp[1]}
{/root/record[2]}
</root>