programing

(dom4j를 대체할) 어떤 Java XML 라이브러리를 추천하십니까?

goodsources 2023. 10. 3. 09:12
반응형

(dom4j를 대체할) 어떤 Java XML 라이브러리를 추천하십니까?

dom4j와 같은 것을 찾고 있지만 dom4j의 사마귀 없이 문서가 잘못되었거나 누락되었으며 개발 상태가 정체된 것처럼 보입니다.

배경:dom4j를 사용하고 옹호해 왔지만 라이브러리가 최적과 거리가 멀다는 것을 알고 있기 때문에 완전히 맞지는 않습니다(예: XSLT 관련 Stylsheet 클래스의 메서드가 문서화되어 있는 방법 참조; 실행하려면 무엇을 전달하시겠습니까()?String mode매개변수?)

요구사항:라이브러리는 순수 JDK(javax.xml및 패키지)를 사용할 때보다 기본 XML 처리를 쉽게 해야 합니다.다음과 같은 것들:

  • 파일 또는 문자열에서 XML 문서를 개체로 읽고, DOM을 쉽게 이동하고 조작하며, XPath 쿼리를 수행하고 XSLT를 실행합니다.
  • Java 코드에 XML 문서를 작성하고 요소와 속성, 데이터를 추가한 다음 마지막으로 문서를 파일 또는 문자열에 씁니다.

저는 dom4j가 약속하는 것이 정말 마음에 듭니다. "사용하기 쉽고, DOM, SAX JAXP를 완벽하게 지원하는 XML, XPathXSLT [...] 작업을 위한 오픈 소스 라이브러리입니다." 그리고 다가오는 dom4j 2.0은 모든 것을 수정한다고 주장합니다. Java 5를 완전히 활용하고 누락된 문서를 추가합니다.하지만 안타깝게도 더 자세히 들여다보면 다음과 같습니다.

경고: dom4j 2.0은 알파 이전 단계입니다.그것은 편집이 안 될 가능성이 높습니다.임의로 컴파일할 수 있는 경우 실행할 수 없을 가능성이 높습니다.가끔 작동할 경우 갑자기 폭발할 수 있습니다.dom4j를 사용하려면 버전 1.6.1을 사용해야 합니다.정말로.

그리고 웹사이트는 오랫동안 그렇게 말해왔습니다.그럼 dom4j의 좋은 대안이 있을까요?이름과 링크만 덤핑하는 것이 아니라 선호하는 라이브러리에 대한 정당성을 제공하십시오. :-)

그럼요, XOM :-)

XOM은 배우기 쉽고 사용하기 쉽도록 설계되었습니다.이것은 매우 직설적으로 작동하며 매우 얕은 학습 곡선을 가지고 있습니다.XML에 이미 익숙하다고 가정하면 XOM을 사용하여 매우 신속하게 실행할 수 있을 것입니다.

저는 지금 몇 년째 XOM을 사용하고 있는데, 아직도 XOM을 매우 좋아합니다.사용하기 쉽고, 웹상에 많은 문서와 기사들이 있고, API는 릴리스 간에 변경되지 않습니다. 최근에 1.2가 출시되었습니다.

XOM은 정확성에 대해 타협하지 않는 유일한 XML API입니다.XOM은 네임스페이스 잘 구성된 XML 문서만 받아들이며, 네임스페이스 잘 구성된 XML 문서만 생성할 수 있습니다. (사실, 이 문서는 실제로 모든 문서가 라운드 트립 가능하고 잘 정의된 XML 인포셋을 가질 수 있도록 보장합니다.) XOM은 XML을 관리하므로 그럴 필요가 없습니다.XOM을 사용하면 응용프로그램의 고유한 가치에 초점을 맞출 수 있으며 XOM을 신뢰하여 XML을 올바르게 적용할 수 있습니다.

웹페이지 http://www.xom.nu/ 에서 FAQ, Cookbook, 디자인의 근거 등을 확인할 수 있습니다.모든 것이 그렇게 많은 사랑으로 디자인되었으면 좋겠어요 :-)

또한 저자는 XML API의 What's What's Wrong with XML APIs (그리고 이를 수정하는 방법)에 대해서도 썼습니다.(기본적으로 XOM이 존재하는 이유)

여기에는 XOM에 대한 저자의 5부 Artima 인터뷰도 있습니다. 여기서는 XML API, The Good, the Bad, and the DOM문제점, JDOM의 설계 리뷰, JDOM에서 배운 교훈 및 마지막으로 설계 원칙 XOM에 대해 이야기합니다.

JDK에 내장된 것 몇 가지 추가 사항이 있습니다.

네, 사용하기가 불편합니다. 위원회에서 명확하게 설계한 W3C 사양을 본 떠 만든 제품입니다.그러나 어디서나 사용할 수 있으며, 여기에 안주하면 서드파티 라이브러리에서 나오는 "I like Dom4J", "I like JDOM", "I like StringBuffer" 논변에 부딪히지 않습니다.특히 그러한 논쟁은 다른 라이브러리를 사용하여 다른 코드 조각으로 변할 수 있기 때문에...

그러나 말씀드린 것처럼 약간의 기능을 강화합니다. Practical XML 라이브러리는 DOM과 함께 작업하기 쉽게 해주는 유틸리티 클래스의 모음입니다.XPath 포장지를 제외하고는 복잡한 것은 없습니다. 그저 모든 일에 대해 다시 쓰는 수많은 루틴들뿐입니다.

돔4j 교체를 위해 XML Tool을 사용해 왔는데 꽤 잘 작동하고 있습니다.

XML 도구는 XML 조작을 용이하게 하기 위해 Fluent Interface 패턴을 사용합니다.

XMLTag tag = XMLDoc.newDocument(false)
   .addDefaultNamespace("http://www.w3.org/2002/06/xhtml2/")
   .addNamespace("wicket", "http://wicket.sourceforge.net/wicket-1.0")
   .addRoot("html")
   .addTag("wicket:border")
   .gotoRoot().addTag("head")
   .addNamespace("other", "http://other-ns.com")
   .gotoRoot().addTag("other:foo");
System.out.println(tag.toString());

Java 5용으로 만들어졌으며 선택한 요소를 통해 쉽게 반복 가능한 개체를 만들 수 있습니다.

for (XMLTag xmlTag : tag.getChilds()) {
   System.out.println(xmlTag.getCurrentTagName());
}

저는 항상 jdom을 좋아했습니다.이것은 DOM 파싱보다 더 직관적으로 쓰였습니다(그리고 SAX 파싱은 어쨌든 항상 서툴게 보입니다).

임무명세서에서:

Java API가 XML을 복잡하거나 까다롭거나 직관적이지 않거나 불편하게 조작할 이유가 없습니다.JDOMTM은 Java 중심이면서 Java에 최적화되어 있습니다.이것은 자바처럼 행동하고, 자바 컬렉션을 사용하며, 현재 자바 개발자들에게는 완전히 자연스러운 API이며, XML을 사용하기 위한 저렴한 진입점을 제공합니다.

그것은 제 경험이었습니다. 노드 트리에 대한 꽤 직관적인 탐색이었습니다.

XStream을 사용합니다. 객체를 XML로 직렬화했다가 다시 되돌리기 위한 간단한 라이브러리입니다.

(JAXB처럼) 주석 기반이 될 수 있지만, 매우 간단하고 쉽게 api를 사용할 수 있으며 JSON을 생성할 수도 있습니다.

JAXB는 왜 안 되는지 @kdgregory에서 기본 제공하는 답변을 추가하겠습니다.

주석이 몇 개 있으면 대부분의 XML 문서를 모델링하기가 매우 쉽습니다.내 말은 아마 물건을 파싱해서 물건을 넣을 거라는 거지?

JAXB 2.0은 JDK 1.6에 내장되어 있으며 다른 많은 자바스크 라이브러리에 내장되어 있는 것과 달리 꽤 좋습니다(Kohusuke가 작업했으므로 좋은 점을 알 수 있습니다.

최근 프로젝트에서 XML 파싱을 좀 해야 했고 결국 동료가 추천한 Simple Framework를 사용하게 되었습니다.

저는 결국 그것에 꽤 만족했습니다.XML 요소와 속성을 Java 클래스와 필드에 매핑하는 주석 기반 접근 방식을 사용합니다.

<example>
  <a>
    <b>
      <x>foo</x>
    </b>
    <b>
      <y>bar</y>
    </b>
  </a>
</example>

해당 Java 코드:

@Root
public class Example {

   @Path("a/b[1]")
   @Element
   private String x;

   @Path("a/b[2]")
   @Element
   private String y;
}

dom4j나 XOM과는 많이 다릅니다.여러분은 어리석고 진부한 XML 처리 코드를 쓰는 것을 피하지만, 처음에는 아마도 주석을 올바르게 이해하려고 한동안 벽에 머리를 부딪힐 것입니다.

(4년 전에 이 질문을 했던 사람이 바로 저였습니다.XOM이 괜찮은 것 같고 꽤 인기 있는 dom4j 대체품인 것 같지만, 저는 아직 그것을 완전히 받아들이지는 못했습니다.아무도 여기서 심플 프레임워크에 대해 언급하지 않았다는 것이 궁금합니다.아마 다시 사용할 것 같아서 고치기로 했습니다.)

프로젝트에서는 작은 XML 파일에만 http://www.castor.org/ 을 사용하고 있습니다.학습하기가 매우 쉽고 매핑 XML 파일만 있으면 됩니다(XML 태그가 클래스 속성과 완벽하게 일치하는 경우에는 없음).수신기(콜백 등)가 추가 처리를 수행할 수 있도록 지원합니다.단점: JAXB와 같은 Java EE 표준이 아닙니다.

JAXB를 주석으로 사용해 볼 수 있습니다. XML 바인딩을 위한 Java Architecture입니다.

저는 주로 HTML 파서이지만 XML과 유사한 구조를 파싱할 수 있는 제리코를 가끔 사용하고 있습니다.

물론 이것은 이름이 지정된 태그를 찾고 구조를 반복하며 태그와 속성을 교체하는 등 가장 간단한 XML 작업을 위한 것이지만, 이것이 가장 많이 사용되는 경우가 아닌가요?

XML 문서 작성을 위해 xmlenc를 제안합니다.카산드라에 사용됩니다.

언급URL : https://stackoverflow.com/questions/831865/what-java-xml-library-do-you-recommend-to-replace-dom4j

반응형