0

我的 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 元素及其所有内容(不仅是所需的 F 元素),其 xpath 如下://D[F=134]/parent::C/parent: :B

提前谢谢你,马辛

4

1 回答 1

0

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

另一种选择可能是在 C 元素级别选择具有相反条件 (F != 134) 并删除这些节点。不过,这取决于您的确切情况。

于 2012-07-24T12:10:06.873 回答