2016-06-06 2 views
0

자바의 SOAP 서비스에 대한 입력을위한 XML 파일을 빌드해야합니다. 입력 XML은 1000 개 이상의 태그로 구성 될 수 있습니다. XML을 구축하는 가장 좋은 방법은 무엇입니까? XSD 파일이 있지만 JAXB를 사용하는 데 약간 복잡합니다. XMLStreamWriter가 좋은 선택입니까?대형 XML 파일 빌더에 대한 유용한 정보

+1

XSD 파일이있는 경우 JAXB 조각과 스트림 및 객체의 반복자를 사용할 수 있습니다. 관심이 있다면 나는 코드를 게시 할 것이다. –

+0

얼마나 많은 정보가 변경 될 수 있는지에 달려 있습니다. 변경되는 사람이 한 줄 밖에되지 않는 경우 정적 파일이 최상의 솔루션 일 수 있습니다. 평균 수정에 나는 freemarker를 제안한다. 대규모 수정에만 복잡한 프레임 워크가 해결책이되어야한다. –

+0

xml 파일 크기는 얼마나 큽니까? jvm에 얼마만큼의 힙 메모리를 할당 할 수 있습니까? –

답변

0

XMLStreamWriter는 Java 응용 프로그램에서 XML을 작성하는 데 사용할 수있는 더 나은 API 중 하나이지만 몇 가지 단점이 있습니다 (예 : 네임 스페이스 처리가 조금 이상합니다). 편의 API로 래핑하는 것이 좋습니다. 당신이 쓰고있는 문서의 종류에 대해 알고있는 어떤 네임 스페이스를 사용하는지.

XMLStreamWriter 인터페이스의 장점 중 하나는 선택할 수있는 구현이 많다는 것입니다. 예를 들어 Saxon은 모든 XSLT/XQuery 직렬화 옵션과 Saxon 확장을 완벽하게 제어 할 수있는 구현을 제공합니다 (예 : 속성의 출력 순서를 제어 할 수도 있습니다).

모든 이벤트 조만간 엔드 태그를 작성하는 것을 잊어 버리고 디버깅하기가 까다로울 수 있습니다. endElement()에서 호출 할 때 요소 이름을 포함하도록하는 래퍼 API를 사용하면 디버깅에 유용 할 수 있습니다. 디버깅이 켜져 있으면 요소 이름 스택을 유지하고 endElement()가 올바른 태그를 작성하고 있는지 확인할 수 있습니다. 디버깅을 끄면이 검사를 중단합니다.

JAXB를 사용한 직렬화는 물론 더 높은 수준이지만, 단점은 제어가 덜된다는 것입니다.