XPath,用于从列表中标识没有子元素且没有特定值的元素

庞巴

我的问题陈述是从清单中找出没有演员的电影。

例如,我想确定"Actor1"尚未上映的电影

我使用的XPATH返回的所有电影中至少有一个演员除外"Actor1"

XPATH: //film[.//actor/name[not(text()='Actor1')]]

XML输入:

<list>
    <!-- Film1 -->
    <film>
        <name>Film1</name>
        <duration>3</duration>
        <actor>
            <name>Actor1</name>
            <age>40</age>
        </actor>
        <actor>
            <name>Actor2</name>
            <age>30</age>
        </actor>
    </film>
    <!-- Film2 -->
    <film>
        <name>Film2</name>
        <duration>2</duration>
        <actor>
            <name>Actor3</name>
            <age>34</age>
        </actor>
        <actor>
            <name>Actor1</name>
            <age>40</age>
        </actor>
        <actor>
            <name>Actor4</name>
            <age>26</age>
        </actor>
    </film>
    <!-- Film3 -->
    <film>
        <name>Film3</name>
        <duration>2</duration>
        <actor>
            <name>Actor2</name>
            <age>30</age>
        </actor>
        <actor>
            <name>Actor5</name>
            <age>16</age>
        </actor>
        <actor>
            <name>Actor6</name>
            <age>5</age>
        </actor>
    </film>
    <!-- Film4 -->
    <film>
        <name>Film4</name>
        <duration>1</duration>
        <actor>
            <name>Actor1</name>
            <age>40</age>
        </actor>
    </film>
</list>

预期:仅"Film3"应返回的节点

实际:XPath结果

<film>
    <name>Film1</name>
    <duration>3</duration>
    <actor>
        <name>Actor1</name>
        <age>40</age>
    </actor>
    <actor>
        <name>Actor2</name>
        <age>30</age>
    </actor>
</film>
<film>
    <name>Film2</name>
    <duration>2</duration>
    <actor>
        <name>Actor3</name>
        <age>34</age>
    </actor>
    <actor>
        <name>Actor1</name>
        <age>40</age>
    </actor>
    <actor>
        <name>Actor4</name>
        <age>26</age>
    </actor>
</film>
<film>
    <name>Film3</name>
    <duration>2</duration>
    <actor>
        <name>Actor2</name>
        <age>30</age>
    </actor>
    <actor>
        <name>Actor5</name>
        <age>16</age>
    </actor>
    <actor>
        <name>Actor6</name>
        <age>5</age>
    </actor>
</film>
杰森

如果您的XPath“返回”film节点至少 具有一个name后代,而文本不是'Actor1'只要film具有name与文本后代'Actor2''Actor3'或任何你的XPath将返回该节点

尝试此操作以获得所需的输出:

//film[not(actor/name='Actor1')]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章