我想清理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中的优秀算法?
答案 0 :(得分:2)
尝试关注xpath
/bar/foo[not(@id = following-sibling::foo/@id)]
我没有对它进行过多测试,因为你只提供了一些测试数据,但我认为它可以工作。