代码之家  ›  专栏  ›  技术社区  ›  martin

如果比较变量为空,如何防止xpath返回all?

  •  0
  • martin  · 技术社区  · 15 年前

    我有这个构造来质疑我的XML文档在XAML中的绑定。

    XPath="/doc/B/lists/entry[@value=(/doc/A/selectedValue)]"
    

    如果路径/doc/a/selectedvalue为空或不存在,则返回/doc/b/list/entry的所有节点。如果/doc/a/selectedvalue为空或不存在,是否可以定义不应返回任何内容?

    希望有人能帮忙,

    你好,马丁

    1 回复  |  直到 15 年前
        1
  •  2
  •   Tomalak    15 年前

    理论上,不是 全部的 返回实体,但仅返回空的实体。当没有选择值时, /doc/A/selectedValue 返回空节点集。与字符串比较时( @value ,然后将空节点集转换为空字符串。这意味着你的表达将等于

    /doc/B/lists/entry[@value='']
    

    为了避免这种情况,你只需要确保 /Doc/A/选择值 不是空的:

    /doc/B/lists/entry[/doc/A/selectedValue != '' and @value=/doc/A/selectedValue]
    

    注意,和任何xpath一样, /Doc/A/选择值 可以返回多个节点。更明确和防御性的是 /doc/A/selectedValue[1] .