2017-05-19 4 views
1

거대한 XML 파일을 구문 분석 할 때 메모리가 많은 DOM 파서는 경량 SAX 파서를 사용하지 않는 것이 좋습니다.Liferay에서 거대한 XML 파일을 Java로 구문 분석하는 방법은 무엇입니까?

Liferay에서 거대한 XML 파일을 구문 분석하고 싶습니다. 이 파일은 항목 목록 일 뿐이므로 항목을 하나씩 독립적으로 처리해야하므로 SAX의 완벽한 사용 사례입니다.

나는 Liferay의 SAXReaderUtil을 찾았지만 그 이름에 "SAX"가 있음에도 불구하고 의심스럽게 DOM 파서처럼 보입니다. 그것은 이벤트가 없으며 XPath로 노드를 선택하고 Document를 반환하는 것으로 보인다. 나는 틀린가?

Liferay 모듈을 개발할 때 거대한 XML 파일을 구문 분석하는 올바른 방법은 무엇입니까?

+0

크기가 얼마나 큽니까? 트레이드 오프가 있습니다 ... 색소폰이나 stax는 코드 작성이 어렵고 기능이 제한되어 있습니다. –

+0

@ vtd-xml-author : XML 파일은 수 기가 바이트가 될 수 있습니다. 코드를 작성하는 것은 문제가되지 않습니다. 필자는 많은 기능을 필요로하지 않고 처음부터 끝까지 요소를 가져옵니다. –

답변

2

Liferay의 XML Utils를 사용하도록 강요하는 것은 없습니다. 질문을하는 방식에 따라 XML과 구문 분석에 대한 경험이 풍부하다고 가정합니다. 필연적으로 나는 "Liferay에서 다른 곳과 같이하고있는 것"으로 충분하다고 생각합니다.

이상적으로 XML 파서/프로세서는 OSGi 번들로 제공되어야합니다 (또는 Liferay에 이미 배포되어 있음).

+0

감사! 가장 쉬운 방법은 [org.xml.sax.helpers.DefaultHandler] (https://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/DefaultHandler.html)를 확장하는 것입니다.). Java 7에서 편리하게 사용할 수 있습니다. 이렇게하면 종속성을 추가하지 않아도됩니다. –

관련 문제