我有这个构造来用xaml中的绑定来质疑我的xml文档。
XPath="/doc/B/lists/entry[@value=(/doc/A/selectedValue)]"
如果路径/ doc / A / selectedValue为空或不存在,则返回/ doc / B / list / entry的所有节点。有没有办法定义在/ doc / A / selectedValue为空或不存在的情况下不应返回任何内容?
希望有人能提供帮助,
问候马丁
答案 0 :(得分:2)
理论上,不会返回所有 B entires,而是唯一为空的。如果没有选定值,/doc/A/selectedValue
将返回空节点集。与字符串(@value
)进行比较时,空节点集将转换为空字符串。这意味着你的表达式将等于
/doc/B/lists/entry[@value='']
为避免这种情况,您只需确保/doc/A/selectedValue
不为空:
/doc/B/lists/entry[/doc/A/selectedValue != '' and @value=/doc/A/selectedValue]
请注意,与任何XPath一样,/doc/A/selectedValue
可以返回多个节点。更明确和更具防御性的是/doc/A/selectedValue[1]
。