xpath查询是否具有像mysql这样的Limit选项

Shi*_*r R 8 xpath limit

我想限制从xpath查询收到的结果数.

例如:-

$info = $xml->xpath("//*[firstname='Sheila'] **LIMIT 0,100**"); 
Run Code Online (Sandbox Code Playgroud)

你看到了LIMIT 0,100.

Geo*_*off 7

你应该可以使用"//*[firstname='Sheila' and position() <= 100]"

编辑:

给出以下XML:

<root> 
    <country.php desc="country.php" language="fr|pt|en|in" editable="Yes"> 
        <en/> 
        <in> 
            <cityList desc="cityList" language="in" editable="Yes" type="Array" index="No"> 
                <element0>Abu</element0>
                <element1>Agartala</element1>
                <element2>Agra</element2> 
                <element3>Ahmedabad</element3>
                <element4> Ahmednagar</element4> 
                <element5>Aizwal</element5>
                <element150>abcd</element150> 
            </cityList> 
        </in> 
    </country.php> 
</root>
Run Code Online (Sandbox Code Playgroud)

您可以使用以下XPath来获取前三个城市:

//cityList/*[position()<=3]
Run Code Online (Sandbox Code Playgroud)

结果:

Node    element0    Abu
Node    element1    Agartala
Node    element2    Agra
Run Code Online (Sandbox Code Playgroud)

如果要将此限制为以以下列开头的节点element:

//cityList/*[substring(name(), 1, 7) = 'element' and position()<=3]
Run Code Online (Sandbox Code Playgroud)

请注意,后一个示例有效,因为您正在选择cityList的所有子节点,因此在这种情况下Position()可以按预期限制结果.如果cityList节点下混合了其他节点名称,则会产生不良结果.
例如,更改XML如下:

<root> 
    <country.php desc="country.php" language="fr|pt|en|in" editable="Yes"> 
        <en/> 
        <in> 
            <cityList desc="cityList" language="in" editable="Yes" type="Array" index="No"> 
                <element0>Abu</element0>
                <dog>Agartala</dog>
                <cat>Agra</cat> 
                <element3>Ahmedabad</element3>
                <element4> Ahmednagar</element4> 
                <element5>Aizwal</element5>
                <element150>abcd</element150> 
            </cityList> 
        </in> 
    </country.php> 
</root>
Run Code Online (Sandbox Code Playgroud)

并使用上面的XPath表达式,我们现在得到

Node    element0    Abu
Run Code Online (Sandbox Code Playgroud)

请注意,我们正在丢失第二个和第三个结果,因为该position()函数正在以更高的优先级进行评估 - 与请求相同"给我前三个节点,现在这些节点给出了所有以'元素开头的节点"".