简体   繁体   English

如果子元素具有值,则 XPath 选择最后一个元素

[英]XPath select last element if child element has value

For example we have next XML file.例如,我们有下一个 XML 文件。 Some orders have descriptions;有些订单有说明; some haven't.有些没有。 How I can take last order, that have DESCRIPTION element?我如何接受具有DESCRIPTION元素的最后一个订单?

<ORDERSINFO>
  <ORDER>
    <NUMBER>168756</NUMBER>
  </ORDER>
  <ORDER>
    <NUMBER>16874</NUMBER>
    <DESCRIPTION>SOCKS</DESCRIPTION>
  </ORDER>
  <ORDER>
    <NUMBER>64971</NUMBER>
    <DESCRIPTION>JIGSAW</DESCRIPTION>
  </ORDER>
  <ORDER>
    <NUMBER>25597</NUMBER>
    <DESCRIPTION>FUEL CANISTER</DESCRIPTION>
  </ORDER>
  <ORDER>
    <NUMBER>31648</NUMBER>
  </ORDER>
</ORDERSINFO>

This XPath,这个 XPath,

/ORDERSINFO/ORDER[DESCRIPTION][last()]

will select the last ORDER element that has a DESCRIPTION ,将选择具有DESCRIPTION的最后一个ORDER元素,

<ORDER>
  <NUMBER>25597</NUMBER>
  <DESCRIPTION>FUEL CANISTER</DESCRIPTION>
</ORDER>

as requested.按照要求。


If you wish to select the last DESCRIPTION that has content which is not empty or whitespace, use this XPath instead:如果您希望选择包含非空或空白内容的最后一个DESCRIPTION ,请改用此 XPath:

/ORDERSINFO/ORDER[DESCRIPTION[normalize-space()]][last()]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM