代码之家  ›  专栏  ›  技术社区  ›  John K

获取除具有特定名称的元素之外的所有子元素的xpath?

  •  33
  • John K  · 技术社区  · 14 年前

    如何确定文档中所有元素的目标 除了 一个特定的元素名?

    例如,我想排除 terminate 元素。它们可以出现在整个文档中。

     <root>
         <terminate attr="1" />
         <other>
             The brown fox jumps over the fence. 
             <terminate>
                <b>stuff</b>
             </terminate>
         </other>
     </root>
    

    我试过用 not(..) 接线员没有成功可能是因为我用错了。

    坦率地说,谷歌“不”很难做到!

    2 回复  |  直到 7 年前
        1
  •  51
  •   Jagmag    14 年前

    下列xpath应该有效

    /root/*[not(self::terminate)] 
    

    另外,我想你也可以用这个

    /root/*[not(name()='terminate')]
    
        2
  •  1
  •   Rudi Kershaw    7 年前

    如果使用的是xpath 2.0,则可以使用

    /root/* except /root/terminate
    

    这是你所期望的。它匹配存在于第一个序列中但不存在于第二个序列中的节点。

    XPath 2.0 Specification - except operator