获取具有唯一属性值的节点

时间:2013-09-29 16:11:01

标签: php xml xpath duplicate-removal

我想清理XML文件,并且不允许节点具有相同值的属性。 XML看起来像:

<bar>
  <foo id="123" some="attribute"/>
  <foo id="abc" some="other attribute"/>
  <foo id="123" some="different attribute"/>
</bar>

它应该看起来像:

<bar>
  <foo id="abc" some="other attribute"/>
  <foo id="123" some="different attribute"/>
</bar>

我正在使用PHP,但我不想做很多循环,所以我想到使用带有DOMXPath对象的XPath请求。 我发现Xpath distinct-values 函数可以提供帮助,但据我所知,它只适用于重复节点,而不适用于节点重复属性。

XPath中是否有解决方案,甚至是PHP中的优秀算法?

1 个答案:

答案 0 :(得分:2)

尝试关注xpath

/bar/foo[not(@id = following-sibling::foo/@id)]

我没有对它进行过多测试,因为你只提供了一些测试数据,但我认为它可以工作。