2009-08-17 8 views
2

SAP에서 반환 한 큰 XML 데이터가 있습니다. 이 중, 나는 단지 몇 개의 노드가 필요하고 반환 된 데이터의 30 %가 될 수 있습니다.Java에서 XML 노드 필터링 | XSLT 또는 파서

인터넷 검색 후, 나는이 방법 중 하나로 노드를 필터링 할 수 있음을 알게 :

  1. 는 XSLT 템플릿을 적용 - 단지이 사이트에, 내가 원하는 멋진 솔루션을 보았다.

  2. 파서 사용 - JDOM 또는 SAX 파서를 사용합니다.

"XML 노드를 필터링하는"효율적인 방법은 무엇입니까?

덕분에

답변

4

SAX 파서는 것입니다 가장 빠르고 (즉, 당신이 메모리에 전체 문서를 읽고 처리 할 필요가 없습니다) 가장 효율적입니다.

XSLT는 원하는 비트를 복사하기 위해 몇 가지 템플릿을 사용하여 identity transform (입력 문서를 복사하는 것)이기 때문에 아마도 더 간단한 솔루션 일 것입니다.

개인적으로 SAX 파서를 사용합니다.

2

StAX API은 귀하의 요구에 맞을 수도 있습니다 - StreamFilter 또는 EventFilter을보십시오. SAX에 비해 pull 모델을 사용하면 예외를 throw하는 것과 같은 인위적인 메커니즘을 사용하지 않고도 원하는 모든 데이터를 파싱 할 때 처리를 더 쉽게 종료 할 수 있다는 장점이 있습니다.

0

고용주가 SAP를 구입할 수있는 경우 임의의 길이의 스트림을 처리 할 수있는 XSLT 프로세서 인 Saxon을 구입할 수 있습니다.