source

Java용 최적의 XML 파서

gigabyte 2022. 9. 1. 23:20
반응형

Java용 최적의 XML 파서

작은 XML 파일(최대 몇 MB, UTF-8 인코딩)을 읽고 다양한 요소 및 속성을 찾아다니며 몇 가지 수정한 후 XML을 디스크에 다시 써야 합니다(가능하면 멋지고 들여쓰기된 포맷으로).

내 요구에 가장 적합한 XML 파서는 무엇입니까?선택할 수 있는 것이 많다.제가 알고 있는 것은 다음과 같습니다.

물론 JDK(Java 6 사용 중)에도 있습니다.나는 Xerces에 익숙하지만 투박함을 느낀다.

권장사항

파서의 구체적인 실장은 고려하지 않는 것이 좋다고 생각합니다.Java API for XML Processing을 사용하면 모든 적합한 파서 구현을 표준 방식으로 사용할 수 있습니다.코드는 훨씬 더 휴대성이 높아져야 하며, 특정 파서가 너무 오래되었다는 것을 알게 되면 코드 행을 변경하지 않고 다른 파서로 교체할 수 있습니다(올바르게 실행한 경우).

기본적으로 XML을 표준 방식으로 처리하는 방법은 세 가지가 있습니다.

  • SAX 이것은 가장 간단한 API입니다.XML이 시리얼 방식으로 처리될 때 요소/아트리뷰트 내부의 데이터를 수신하는 핸들러 클래스를 정의함으로써 XML을 읽을 수 있습니다.일부 특성/요소를 읽거나 일부 값(경우)을 다시 쓸 계획이라면 더 빠르고 단순합니다.
  • DOM 이 메서드는 오브젝트 트리를 만듭니다. 트리를 랜덤으로 수정/액세스 할 수 있기 때문에 복잡한 XML 조작과 처리에 적합합니다.
  • STAX SAX와 DOM 사이의 경로 중간에 있습니다.데이터를 처리할 때 관심 있는 파서에서 데이터를 꺼내는 코드를 작성하기만 하면 됩니다.

JDOM이나 Apache와 같은 독점 API(즉 Apache Xerces XML Serializer)는 잊어버리십시오. 왜냐하면 시간이 지남에 따라 진화하거나 역호환성을 상실할 수 있는 특정 구현과 연결되기 때문에 나중에 JDOM 또는 사용하는 파서로 업그레이드 할 때 코드를 변경할 수 있습니다.Java 표준 API(공장 및 인터페이스 사용)를 고수하면 코드가 훨씬 모듈화되어 유지보수가 용이해집니다.

제안된 모든 파서가 JAXP 구현에 적합하다고 말할 필요는 없습니다.따라서 기술적으로 어느 쪽이든 모두 사용할 수 있습니다.

다음은 DOM, SAX, StAX 및 TraX에 대한 비교입니다(출처:http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html).

기능: STAX SAX DOM TRAX

API 유형 풀, 스트리밍 푸시, 메모리 트리 내 스트리밍 XSLT 규칙

사용하기 쉬운 하이미디엄 하이미디엄

XPath 기능 No No Yes

CPU와 메모리의 Good Good(양호도)에 따라 다름

전달 전용 예 예 아니오

XML을 확인했습니다.네, 네, 네, 네.

XML 쓰기 예 아니오 예

CRUD No No Yes No

속도와 메모리에 문제가 없다면 dom4j를 선택하는 것이 좋습니다.속도가 필요한 경우 Woodstox와 같은 StAX 파서를 사용하는 것이 맞지만 작업을 수행하려면 코드를 더 많이 작성해야 하고 스트림에서 XML을 처리하는 데 익숙해져야 합니다.

단순한 XML http://simple.sourceforge.net/은 오브젝트의 (디)사이징이 매우 간단합니다.

SAX 및 DOM 외에 XMLStreamReader를 사용하여 STaX 해석을 사용할 수 있습니다.XML StreamReader는 xml 풀파서입니다.

특히 Xerces에 비해 dom4j는 XML을 사용하는 도구라는 것을 알게 되었습니다.

앱에 "생각"이 많다는 것은 추천할 수 없지만, XSLT를 사용하는 것이 Java 조작보다 더 나을 수 있습니다(XSLT-to-Byte 컴파일을 사용하면 더 빠를 수 있습니다).

성능에는 관심이 없으시다면 저는 Apache Digester의 열렬한 팬입니다. 기본적으로는 XML에서 Java Bean으로 직접 매핑할 수 있기 때문입니다.

그렇지 않으면 먼저 해석한 후 개체를 구성해야 합니다.

언급URL : https://stackoverflow.com/questions/373833/best-xml-parser-for-java

반응형