我有以下路径:
我想选择ns1:customField10,如果它不为空,否则我想返回ns1:accountNumber。
我尝试了以下内容:
xml.SelectSingleNode(
"(/my:cobius/ns1:Audit/ns1:Visit/ns1:customField10 |
/my:cobius/ns1:Audit/ns1:Visit/ns1:accountNumber)", ns)
但它始终返回accountNumber。我尝试翻转customField10和accountNumber的顺序,但没有快乐。它仍然返回accountNumber。
如何在XPath中执行等效的coalesce运算符?
更新
这是最终的代码:
xml.SelectSingleNode(
"(/my:company/ns1:Audit/ns1:Visit/ns1:customField10[normalize-space()] |
/my:company/ns1:Audit/ns1:Visit/ns1:accountNumber[not(normalize-space(../ns1:customField10))])", ns)
答案 0 :(得分:5)
如果节点丢失,您的代码将起作用(类似于SQL中的NULL)。但是不会丢失空(就像SQL中的空字符串一样)。
您当然可以添加谓词:
/my:cobius/ns1:Audit/ns1:Visit/ns1:customField10[string-length(.)] | /my:cobius/ns1:Audit/ns1:Visit/ns1:accountNumber