通过PHP从XML文件中选择不同的值

问题描述 投票:1回答:3

我有一个XML文件结构如下:

<users>
 <user>
  <name>Fred</name>
 </user>
 <user>
  <name>Fred</name>
 </user>
 <user>
  <name>Bob</name>
 </user>
</users>

我试图使用XPath返回不同名称的列表:

$page = simplexml_load_file('data/data.xml');

$dims = $page->xpath('/users/user[not(@name=preceding-sibling::user/@name)]/@name');

这似乎不起作用。知道怎么做吗?也许加载到数组和解析数组?

php xml xpath
3个回答
2
投票

@name是属性语法,你想使用name来考虑元素名称:

$dims = $page->xpath('/users/user[not(name=preceding-sibling::user/name)]/name');

0
投票

你使用数组的想法是正确的。只需创建一个新数组来保存唯一身份,遍历用户列表,如果当前用户不在数组中,则添加它。

$page = simplexml_load_file('data/data.xml');

$uniqueUsers = array();

foreach($obj as $userObj)
{
    if(!in_array((string)$page->name, $uniqueUsers))
    {
        $uniqueUsers[] = (string)$page->name;
    }
}

DEMO


-3
投票

是的,数组将更容易解析:

$json = json_encode($xml);
$array = json_decode($json,TRUE);
© www.soinside.com 2019 - 2024. All rights reserved.