我試圖找到一種過濾XML文件結果的方式,正如我通常使用MySQL和PHP所做的那樣。使用PHP篩選和排序XML
假設我的條件是「由ID ASC選擇ID,名稱來自用戶的命令」,我怎麼會在我的XML文件中運行相同的查詢,如果該文件的結構是這樣的:
<用戶> <LD/ID> <名>鮑勃< /名稱> < /用戶>
...
非常感謝:)
我試圖找到一種過濾XML文件結果的方式,正如我通常使用MySQL和PHP所做的那樣。使用PHP篩選和排序XML
假設我的條件是「由ID ASC選擇ID,名稱來自用戶的命令」,我怎麼會在我的XML文件中運行相同的查詢,如果該文件的結構是這樣的:
<用戶> <LD/ID> <名>鮑勃< /名稱> < /用戶>
...
非常感謝:)
您可以使用XPath。
鑑於這種XML和PHP:
$xml = <<< EOT
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<userlist>
<users>
<user>
<id>1</id>
<name>Bob</name>
</user>
<user>
<id>2</id>
<name>David</name>
</user>
</users>
</userlist>
EOT;
$x_obj = simplexml_load_string($xml);
SELECT * FROM users ORDER BY id ASC
$result = $x_obj->xpath('//user');
function cmp($a, $b)
{
if ($a->id > $b->id) return -1;
if ($a->id < $b->id) return 1;
return 0;
}
usort($result, cmp);
SELECT * FROM users WHERE id=2
$result = $x_obj->xpath('//user[id=2]');
SELECT name FROM users WHERE id=2
$result = $x_obj->xpath('//user[id=2]/name');
SELECT id FROM users WHERE name='Bob'
$result = $x_obj->xpath('//user[name="Bob"]/id');
其結果將是一個簡單的數組。
住在codepad.org(20:10 GMT + 1:目前下跌):http://codepad.org/LSo2YX37
怎麼樣的XPath? – ComFreek
任何解決方案歡迎! – Tim
看到我的答案;) – ComFreek