我想限制從xpath查詢中收到的結果的數量。xpath查詢是否具有像mysql這樣的Limit選項
例如: -
$info = $xml->xpath("//*[firstname='Sheila'] **LIMIT 0,100**");
你看到LIMIT 0,100
。
我想限制從xpath查詢中收到的結果的數量。xpath查詢是否具有像mysql這樣的Limit選項
例如: -
$info = $xml->xpath("//*[firstname='Sheila'] **LIMIT 0,100**");
你看到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>
您可以使用以下XPath率先拿到三個城市:
//cityList/*[position()<=3]
個結果:
Node element0 Abu
Node element1 Agartala
Node element2 Agra
如果要將此限制與element
啓動節點:
//cityList/*[substring(name(), 1, 7) = 'element' and position()<=3]
注意,這後一個例子的作品,因爲你選擇所有 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>
,並使用上述XPath表達式,我們現在得到
請注意,我們正在失去的第二個和第三個結果,因爲position()
函數以更高的優先級進行評估 - 與請求「給我前三個節點相同,現在超出了這些給了我所有以'element'開始的節點」。
我自己也遇到過同樣的問題,並且Geoffs的回答存在一些問題,正如他明確描述的那樣,由於優先級而限制了在執行查詢的其他部分之前返回的元素數量。
我的解決方案是將position() < 10
添加作爲附加條件後,已應用我的其他條件,例如爲:
//ElementsIWant[./ChildElementToFilterOn='ValueToSearchFor'][position() <= 10]/.
請注意,我用兩個獨立的條件塊。 這將首先過濾出符合我的條件的元素,其次只需要其中的10個。
請您澄清一下您的問題嗎?你想從XML中提取什麼? – Geoff 2012-04-11 16:04:15
感謝Geoff的回覆。但我的xml格式與 阿布 阿加爾塔拉%2A 阿格拉 艾哈默德巴德 前進到喜歡.... ABCD 我不得不選擇元素所以我的xpat h(/root/country.php/fr/cityList [position()<= 10])...但它不起作用,請幫助! –
2012-04-11 16:04:18
傑夫......我在做分頁。我不得不選擇一堆中的節點[如element(n)]。 – 2012-04-12 05:52:14