XPath选择仅包含一个无子节点的最上面的节点

时间:2015-09-08 18:05:21

标签: .net xpath count

我正在寻找.NET中的XPath,它只选择最上面的节点,其中包含只有一个终端(无子机)节点

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/ic_clear_white_24dp"
    android:drawableRight="@drawable/ic_clear_white_24dp"
    android:drawableBottom="@drawable/ic_clear_white_24dp"
    android:drawableTop="@drawable/ic_clear_white_24dp"
/>

如果可能的话,我想摆脱无用的嵌套项目并推广终端:

A <--
    B
        C
D
    E <--
        F
    G <--
    H <--
        I 
            J


C, F, G, J are terminal

修改

我想我已经接近了

C to A position; F to E position; G remains in place; ...

可以通过

选择终端
.//*[count(descendant-or-self::terminal)=1] [ not(ancestor::*[count(.//terminal)=1]) ]

1 个答案:

答案 0 :(得分:0)

只是//*[count(descendant-or-self::*)=1]出了什么问题?

% cat uppermost.xml 
<R>
  <A><B><C/></B></A>
  <D>
    <E><F/></E>
    <G/>
    <H><I><J/></I></H>
  </D>
</R>
% xpquery '//*[count(descendant-or-self::*)=1]' uppermost.xml
<C/>
<F/>
<G/>
<J/>
%