Xpath表达式从输入xml获得低于输出的值

时间:2018-05-28 08:10:12

标签: xml xpath xquery

输入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]],但它没有用。

1 个答案:

答案 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>