2011-08-17 13 views
0

두 개의 다른 XML 파일이 있습니다. 첫 번째 파일은 xml 템플릿이고 두 번째 파일은 실제 XML입니다. 템플릿 xml에는 XML 파일에 아래에 표시된 템플릿 xml에있는 요소 중 일부가 실제 xml에 포함되어있는 요소 만 들어 있습니다. 템플릿 xml에있는 각 요소에 대해 실제 xml을보고 해당 요소가 있는지 확인한 다음 그 값이 있으면 출력하고 그렇지 않으면 출력에 표시된대로 빈 공간을 인쇄합니다.xml에서 노드 값 추출

Template.xml

<personinfo> 
    <person> 
    <name><name> 
    <age></age> 
    <address> 
    <street></street> 
    <city></city> 
    <address> 
    </person> 
    <person> 
    <name><name> 
    <age></age> 
    <address> 
    <street></street> 
    <city></city> 
    <address> 
    </person> 
    <person> 
    <name><name> 
    <age></age> 
    <address> 
    <street></street> 
    <city></city> 
    <address> 
    </person> 
</personinfo> 

Actual.xml

<personinfo> 
    <person> 
    <name>tom<name> 
    <age>26</age> 
    <address> 
    <street>main street</street> 
    <city>washington</city> 
    <address> 
    </person> 
    <person> 
    <name>mike<name> 
    <age>30</age> 
    <address> 
    <street>first street</street> 
    <city>dallas</city> 
    <address> 
    </person> 
</personinfo> 

예상 출력

tom,26,main street,washington,mike,30,first street,dallas,,,, 
+2

당신이 특정 질문이 있으십니까을? 지금까지 무엇을했는지, 그리고 어떤 문제가 있었는지 보여주십시오. –

+0

나는 이러한 xml 파일을 DOM을 사용하여 구문 분석하고 각각의 XML에 대해 두 개의 별도의 문서가 있고 그 후에 나는 실제 XML에서 템플릿 xml로부터 요소를 하나씩 조사하여 값을 얻는 방법을 모릅니다 ... – Naveen

+0

@Naveen XML을 구문 분석 할 때 무엇을 사용하고 있습니까? Jdom - http://www.jdom.org/은 간단하고 사용하기 쉽습니다. 하나의 요소를 하나씩 얻는 것에 관해서는 element.getChildren을 호출하여 요소 목록을 얻을 수 있습니다. 그런 다음 각 요소에 대해 재귀 적으로 동일한 메소드를 호출 할 수 있습니다. 스키마의 경우 – Heathen

답변

2

먼저 템플릿이 아닌 XML 스키마를 정의해야합니다. 다음으로 Person의 자바 빈을 생성 할 수있다. 이는 JAXB를 사용하여 각 사람에게 매핑 될 수 있습니다. 이것은 과거 XML 파싱에 대한 가장 빠른 방법이었습니다. http://jaxb.java.net/

+0

+1 – Wivani

0

a. 두 문서를 DOM으로 파싱하십시오.

b. 재귀 적으로 횡단 템플릿

c. (옵션 1) 발견 된 각 요소에 대해 xpath (스택 및 푸시/팝 사용)를 빌드하십시오.

d. (옵션 1) actual.xml에서 xpath를 실행하십시오.

c. (옵션 2) 템플릿과 동시에 실제를 재귀 적으로 순회합니다. 요소가 발견되지 않으면 템플릿 안으로 더 이상 이동하지 않습니다.

1

이 예제는 매우 작기 때문에 (아직) 문제가되지는 않지만 XML 내용을 파싱하기 위해 DOM 대신 SAX를 사용하려고합니다. 이벤트가 있으면 콘텐츠를 출력하는 것이 매우 쉽습니다.

예를 들어 자바에서 XML 처리에 최대 읽기 :

  • here
  • here
  • 및 수많은 다른 웹 사이트와 기사와 책