我正在尝试找到一种在 XML 文件中过滤结果的方法,就像我通常使用 MySQL 和 PHP 所做的那样。
假设我的查询是“select ID, NAME from USERS order by ID ASC”,如果文件结构如下所示,我将如何在 XML 文件上运行相同的查询:
<用户>
...
非常感谢:)
最佳答案
您可以使用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);
从用户中选择 * 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);
从用户中选择 * WHERE id=2
$result = $x_obj->xpath('//user[id=2]');
从用户中选择名称(其中 id=2)
$result = $x_obj->xpath('//user[id=2]/name');
从用户中选择 ID,其中 name='Bob'
$result = $x_obj->xpath('//user[name="Bob"]/id');
结果将是一个简单的数组。
在 codepad.org 上直播(20:10 GMT+1:目前已关闭):http://codepad.org/LSo2YX37
关于php - 使用 PHP 过滤和排序 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000188/