带有可选条件的XPath查询(仅当标记存在时才应用条件)

时间:2016-11-04 11:34:06

标签: xml xpath

我有一个XML文档,我想从XPath中提取一些数据。这是我感兴趣的xml中的一个块:

<SalesPrice ElementId="719304324">
    <CountryCodeA2>DE</CountryCodeA2>
    <CurrencyISOCode>EUR</CurrencyISOCode>
    <ValidFrom>2016-10-21T09:39:16.000+02:00</ValidFrom>
    <CancelDate>2016-10-25T09:39:16.000+02:00</CancelDate>
    <Amount>3595</Amount>
</SalesPrice>

我正在尝试根据<SalesPrice><ValidFrom>值获取所有有效的<CancelDate>个节点。但是,问题是并非所有<SalesPrice>个节点都有<CancelDate>标记,而我的查询不起作用:

/SalesPrice[ValidFrom > 2016-10-23T11:15:50+00:00 and CancelDate < 2016-10-23T11:15:50+00:00]

那么,即使他们的 CancelDate 缺失,获得所有 SalesPrices 的正确查询是什么?

1 个答案:

答案 0 :(得分:2)

假设以下XML:

<root>
  <a>
    <b>1</b>
  </a>
  <a/>
</root>

以下XPath表达式将同时选择a个节点:

//a[not(b) or b = 1]