xpath如何根据子项选择父级

时间:2012-07-24 11:03:28

标签: xml xpath

我的XML结构如下所示:

<A>
    <B>
        <C>
            <D>
                <E>1</E>
                <F>123</F>
            </D>

            <D>
                <E>1</E>
                <F>153</F>
            </D>
        </C>

        <C>
            <D>
                <E>1</E>
                <F>134</F>
            </D>
        </C>
    </B>

    <B>
        <C>
            <D>
                <E>2</E>
                <F>133</F>
            </D>
        </C>

        <C>
            <D>
                <E>2</E>
                <F>134</F>
            </D>
        </C>
    </B>
</A>

我想知道是否有可能获得所有“B”元素(及其内容),其中F元素具有特定值,在这种情况下,假设为134。但是,我不希望得到其他C元素 - 所以对于这个例子我很乐意得到:

<A>
    <B>
        <C>
            <D>
                <E>1</E>
                <F>134</F>
            </D>
        </C>
    </B>

    <B>
        <C>
            <D>
                <E>2</E>
                <F>134</F>
            </D>
        </C>
    </B>
</A>

这甚至可能吗?我一直在玩xpath,但我唯一得到的是B元素 all 其内容(不仅包含所需的F元素)以及xpath: // d [F = 134] /父:: C /父:: B

提前谢谢你, 马尔钦

1 个答案:

答案 0 :(得分:0)

如果你在B元素级别选择(无论你对孩子有什么其他条件),你总是会得到B元素的全部内容。

另一种选择可能是在C元素级别选择反向条件(F!= 134)并删除这些节点。这取决于你的具体情况。