2013-09-29 2 views
1

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를 사용하고 있지만 많은 루프를 만들고 싶어하지 않는, 그래서으로하는 XPath 요청을 사용하여 생각 DOMXPath 객체 Xpath distinct-values ​​ 함수는 도움이 될 수 있지만 내가 이해하는 한, 노드 중복 속성이 아닌 중복 노드에 대해서만 작동한다는 것을 발견했습니다.

XPath의 해결책이 있습니까? 아니면 PHP의 훌륭한 알고리즘입니까?

+1

'foo' 노드를 유지하는 규칙은 무엇입니까? 마지막으로 본 사람? –

+0

@TimCooper 예,하지만 최악의 경우에는 첫 번째 것을 유지할 수 있습니다. –

답변

2

보십시오 다음 나는 매우 당신은 단지 몇 가지 테스트 데이터를 제공하지만 그것이 작동 수 있다고 생각하기 때문에 그것을 테스트하지 않았다

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

XPath는.

+0

완벽하게 작동합니다! 고맙습니다. –