我有一个XML文件,其结构如下:
ContentControl
我正在尝试使用XPath返回不同名称的列表:
<users>
<user>
<name>Fred</name>
</user>
<user>
<name>Fred</name>
</user>
<user>
<name>Bob</name>
</user>
</users>
这似乎不起作用。任何想法如何做到这一点?也许加载到数组并解析数组?
答案 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;
}
}
答案 2 :(得分:-3)
是的,数组将更容易解析:
$json = json_encode($xml);
$array = json_decode($json,TRUE);