具有可选条件的XPath查询(仅在标记存在时适用条件)

问题描述:

我有一个XML文档,我想从XPath中提取一些数据。这里是我感兴趣的XML块:具有可选条件的XPath查询(仅在标记存在时适用条件)

<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] 

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

假设下面的XML:

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

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

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

谢谢!这正是我所期待的。当我尝试比较日期时,我现在遇到了另一个问题...您是否知道在XPath查询中比较日期的最佳方法是什么? –

+0

@ArminSam哪个版本的XPath? (另见http://*.com/questions/4347320/xpath-dates-comparison。) – Markus

+0

XPath版本1.0 –