我有一个复杂的"通常"如何根据XPATH条件返回字符串值的问题。
我之前成功使用过以下解决方案: Return a string value based on XPATH condition和Nested conditional if else statements in xpath
但现在我的XML是:
<Events xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EventDetails>
<AccountingDate>2017-01-01</AccountingDate>
<PaymentDate>2017-01-31</PaymentDate>
</EventDetails>
<EventDetails>
<AccountingDate>2017-01-01</AccountingDate>
<PaymentDate xsi:nil="true"/>
</EventDetails>
</Events>
我需要提取PaymentDate,如果它有一个值,否则替换AccountingDate,即2017-01-31替换第一个事件,但2017-01-01替换第二个。
问题是我强制使用的解析器是XPath 1.0并且不识别nilled函数,如果PaymentDate为nil,则boolean(PaymentDate)为真。
我希望有人有一个好主意,因为我完全难过。
答案 0 :(得分:0)
最后在大约4个小时后解决了......
var counter = 0;
$("#button").click(function() {
$(".slick").last().after("<div class='box'></div><div class='slick'></div>")
});
// With on():
$(".slick").on("click", function() {
$('<style>.box { background-color: blue !important; }</style>').appendTo('head');
});
(它也适用于PaymentDate根本不存在的可能性,尽管在我的情况下它总是存在。)
现在我只需要让它与三个可能的日期一起工作!
答案 1 :(得分:0)
您也可以尝试此过滤
EventDetails[PaymentDate != '']/PaymentDate | EventDetails[PaymentDate = '']/AccountingDate
或实际水平
PaymentDate[. != ''] | AccountingDate[../PaymentDate = '']
或者,如果在PaymentDate缺失和xml数据顺序修复时工作很重要
PaymentDate[. != ''] | AccountingDate[not(following-sibling::PaymentDate) or following-sibling::PaymentDate = '']