2009-06-07 5 views
3

내 질문은 이것이다 :Xerces : 중복 노드를 병합하는 방법은 무엇입니까?

나는 다음과 같은 XML이있는 경우 :

<root> 
    <alpha one="start"> 
    <in>1</in> 
    </alpha> 
</root> 

을 한 후 나는 다음과 같은 경로를 추가 할 것입니다 :

<root><alpha one="start"><out>2</out></alpha></root> 

<root> 
    <alpha one="start"> 
    <in>1</in> 
    </alpha> 
</root> 
<root> 
    <alpha one="start"> 
    <out>2</out> 
    </alpha> 
</root> 
결과

나는 이것을 다음으로 변환 할 수 있기를 원합니다.

그것을 자신을 구현 게다가
<root> 
    <alpha one="start"> 
    <in>1</in> 
    <out>2</out> 
    </alpha> 
</root> 

(오늘 한결 기분이 안), 의 Xerces의 특정 방법이 (2.8, C는 ++)을 할까?

그렇다면 DOMDocuments의 어느 시점에서 노드 병합이 완료됩니까? 각 삽입시에? 명시 적으로 문서의 작성시 명시 적으로?

감사합니다.

+0

이 질문을 다음과 같이 다시 쓸 수 있습니까? "노드의 하위 노드를 다른 노드로 이동하려면 어떻게합니까?" – Glenn

답변

1

xalan을 사용하면 xpath를 사용하여 요소를 찾고 직접 correc에 삽입 할 수 있습니다.

다음 코드는 느릴 수 있지만 "one"특성이 "start"로 설정된 모든 "루트"elments를 반환합니다.

selectNodes("//root[@one="start"]") 

당신이 이미

selectNodes("./root[@one="start"]") 

상대 부모 요소의 작업이있는 경우

selectNodes("/abc/def/.../root[@one="start"]") 

가 또는 내가 기본 개념 xpath on wikipedia을 얻기 위해 생각의 전체 경로를 사용하는 것이 좋을 것입니다.

0

다양한 태그가있는 컨테이너 태그의 이름을 아는 것이 단지 1 분 작업이 아니십니까?

예를 들어, 모든 XML 문서에서 alpha 태그에 대한 포인터를 가져 와서 이미 존재하지 않으면 모든 XML 문서의 내용을 새 문서의 알파에 넣으십시오.

이것은 바퀴를 다시 발명하는 것만 큼 나쁘지 않습니다. 나는 Xerces에 익숙하지 않지만 libxml ++에서는 이것을 쉬운 일이라고 부른다.

관련 문제