使用PHP过滤和排序XML

时间:2011-11-03 18:40:16

标签: php mysql xml simplexml

我正试图找到一种在XML文件中过滤结果的方法,就像我通常使用MySQL和PHP一样。

假设我的查询是“选择ID,ID ASC从USERS订单中的NAME”,如果文件结构如下,我将如何在我的XML文件上运行相同的查询:

<使用者>   < LD大于1< / ID>   <名称> Bob的LT; /名称> < /使用者>

...

非常感谢:)

1 个答案:

答案 0 :(得分: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