【问题标题】:Why does Xpath expression ending in [*] returns empty list when changing to [node()] returns elements为什么以[*]结尾的Xpath表达式更改为[node()]返回元素时返回空列表
【发布时间】:2011-05-21 20:14:34
【问题描述】:

我有一个 xml 文件,其中有一个 sortbits 元素,其中有 32 个 bit 元素作为子元素。如果我使用 xpath 表达式

/config/portmod/sortbits/bit[*]

它返回一个空列表。

如果我把它改成

/config/portmod/sortbits/bit[node()]

它返回一个包含所有 32 个 bit 元素的 NodeList

表达式

/config/portmod/sortbits/bit[last()]

返回最后一个元素。为什么[*] 表达式不返回任何内容?

【问题讨论】:

    标签: xml xpath predicate


    【解决方案1】:

    表达式bit[*] 返回具有子元素的位元素。如果什么都不返回,大概是没有bit元素有子元素。

    表达式bit[node()] 返回具有任何类型子节点的位元素,例如文本节点子节点。大概如果bit[node()] 返回元素而bit[*] 没有返回,那么这些元素有一个文本节点子节点,但没有元素节点子节点。

    【讨论】:

    • 谢谢迈克尔,这似乎是答案。表达式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2019-11-09
    • 2017-02-02
    • 1970-01-01
    • 2016-06-21
    • 2017-03-06
    相关资源
    最近更新 更多