2011-11-03 101 views
0

我試圖找到一種過濾XML文件結果的方式,正如我通常使用MySQL和PHP所做的那樣。使用PHP篩選和排序XML

假設我的條件是「由ID ASC選擇ID,名稱來自用戶的命令」,我怎麼會在我的XML文件中運行相同的查詢,如果該文件的結構是這樣的:

<用戶> <LD/ID> <名>鮑勃< /名稱> < /用戶>

...

非常感謝:)

+0

怎麼樣的XPath? – ComFreek

+0

任何解決方案歡迎! – Tim

+0

看到我的答案;) – ComFreek

回答

1

您可以使用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

+0

真棒。非常感謝! – Tim

+0

不客氣! – ComFreek

+0

再次ComFreek,我該如何打印/回顯這些數據? – Tim