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

时间:2018-07-19 16:12:28

标签: php xml xpath

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

ContentControl

我正在尝试使用XPath返回不同名称的列表:

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

这似乎不起作用。任何想法如何做到这一点?也许加载到数组并解析数组?

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 2 :(得分:-3)

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

$json = json_encode($xml);
$array = json_decode($json,TRUE);