我想限制从xpath查询收到的结果数.
例如:-
$info = $xml->xpath("//*[firstname='Sheila'] **LIMIT 0,100**");
Run Code Online (Sandbox Code Playgroud)
你看到了LIMIT 0,100.
你应该可以使用"//*[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()函数正在以更高的优先级进行评估 - 与请求相同"给我前三个节点,现在这些节点给出了所有以'元素开头的节点"".
| 归档时间: |
|
| 查看次数: |
6634 次 |
| 最近记录: |