programing

dom4j를 대체하기 위해 어떤 Java XML 라이브러리를 권장합니까?

nasanasas 2020. 10. 17. 10:37
반응형

dom4j를 대체하기 위해 어떤 Java XML 라이브러리를 권장합니까?


나는 dom4j와 같은 것을 찾고 있지만 문서가 잘못되었거나 누락되었거나 개발 상태가 멈춘 것처럼 보이는 것과 같은 dom4j 사마귀가 없습니다.

배경 : 저는 dom4j를 사용 하고 옹호 해 왔지만 라이브러리가 최적과 거리가 멀다는 것을 알고 있기 때문에 완전히 옳다고 생각하지 않습니다 (예 : XSLT 관련 Stylesheet 클래스의 메서드가 어떻게 문서화 되어 있는지 확인하십시오 . ) String mode매개 변수로?)

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

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

저는 dom4j가 약속 하는 것을 정말 좋아합니다 . " 사용하기 쉽고, XML, XPath 및 XSLT 작업을위한 오픈 소스 라이브러리 [...] DOM, SAX 및 JAXP를 완벽하게 지원합니다. "그리고 곧 출시 될 dom4j 2.0은 모든 것을 수정한다고 주장합니다. : Java 5를 완전히 활용하고 누락 된 문서를 추가합니다. 하지만 안타깝게도 자세히 살펴보면 다음과 같습니다.

경고 : dom4j 2.0은 사전 알파 단계입니다. 컴파일 할 수 없습니다. 무작위로 컴파일 할 수있는 경우 실행할 수 없습니다. 가끔씩 달리면 갑자기 폭발 할 수 있습니다. dom4j를 사용하려면 버전 1.6.1이 필요합니다. 정말.

... 그리고 웹 사이트는 오랫동안 그렇게 말했습니다 . dom4j에 대한 좋은 대안이 있습니까? 이름과 링크를 덤프하는 대신 선호하는 라이브러리에 대한 근거를 제공하십시오. :-)


네, XOM :-)

XOM은 배우기 쉽고 사용하기 쉽게 설계되었습니다. 매우 간단하게 작동하며 학습 곡선이 매우 얕습니다. 이미 XML에 익숙하다고 가정하면 XOM을 매우 빠르게 시작하고 실행할 수 있습니다.

저는 XOM을 몇 년 동안 사용하고 있으며 여전히 매우 좋아합니다. 사용하기 쉽고 웹상의 많은 문서와 기사, API는 릴리스간에 변경되지 않습니다. 1.2가 최근에 출시되었습니다.

XOM은 정확성을 타협하지 않는 유일한 XML API입니다. XOM은 네임 스페이스 형식의 XML 문서 만 허용하며 네임 스페이스 형식의 XML 문서 만 만들 수 있습니다. (사실 그보다 약간 더 엄격합니다. 실제로 모든 문서가 왕복 가능하고 잘 정의 된 XML 정보 세트를 갖도록 보장합니다.) XOM은 XML을 관리하므로 필요하지 않습니다. XOM을 사용하면 애플리케이션의 고유 한 가치에 집중하고 XOM을 신뢰하여 XML을 올바르게 얻을 수 있습니다.

웹 페이지 http://www.xom.nu/ 에서 FAQ, 요리 책, 디자인 근거 등을 확인하십시오 . 모든 것이 너무 많은 사랑으로 디자인 되었다면 :-)

Author는 또한 XML API의 문제 (및 수정 방법)에 대해 썼습니다 . (기본적으로 XOM이 존재하는 이유)

여기에 또한 그들에 대해 이야기 XOM에 대한 저자의 5 부분으로 Artima 인터뷰입니다 XML API가 뭐가 잘못 됐는지 , 좋은, 나쁜, 그리고 DOM , JDOM의 디자인 검토는 , 수업 JDOM에서 배운 마지막으로 디자인 원칙 및 XOM .


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

예, 사용하기가 어렵습니다.위원회에서 명확하게 디자인 한 W3C 사양을 모델로 한 것입니다. 그러나 어디에서나 사용할 수 있으며, 이에 만족한다면 타사 라이브러리에서 제공하는 "I like Dom4J", "I like JDOM", "I like StringBuffer"인수에 부딪히지 않습니다. 특히 그러한 인수는 다른 라이브러리를 사용하여 다른 코드 조각으로 바뀔 수 있기 때문에 ...

그러나 내가 말했듯이 약간 향상되었습니다. Practical XML 라이브러리는 DOM 작업을 더 쉽게 해주는 유틸리티 클래스 모음입니다 . XPath 래퍼를 제외하고 여기에는 복잡한 것이 없으며 모든 작업에 대해 다시 작성하는 루틴의 무리 만 있습니다.


Dom4j 를 대체하기 위해 XMLTool사용해 왔으며 꽤 잘 작동합니다.

XML 도구는 Fluent 인터페이스 패턴을 사용하여 XML 조작을 용이하게합니다.

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에 최적화되어 있습니다. Java처럼 작동하고 Java 컬렉션을 사용하며 현재 Java 개발자를위한 완전히 자연스러운 API이며 XML 사용을위한 저렴한 진입 점을 제공합니다.

그것은 거의 내 경험이었습니다. 노드 트리의 상당히 직관적 인 탐색입니다.


I use XStream, its a simple library to serialize objects to XML and back again.

it can be annotation-driven (like JAXB), but it has very simple and easy to use api and you can even generate JSON.


I'll add to the built-in answer by @kdgregory by saying why not JAXB?

With a few annotations its pretty easy to model most XML documents. I mean your probably going to parse the stuff and put in an object right?

JAXB 2.0 is built in to JDK 1.6 and unlike many other builtin javax libraries this one is pretty good (Kohusuke worked on it so you know its good).


In a recent project I had to do some XML parsing, and ended up using Simple Framework, recommended by a colleague.

I was quite happy with it in the end. It uses an annotation-based approach of mapping XML elements and attributes to Java classes and fields.

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

Corresponding Java code:

@Root
public class Example {

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

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

It's all quite different from dom4j or XOM. You avoid writing silly, boilerplatey XML handling code, but at first you'll probably bang your head against a wall for a while trying to get the annotations right.

(It was me who asked this question 4 years ago. While XOM seems a decent and quite popular dom4j replacement, I haven't come to fully embrace it. Curious that no-one had mentioned Simple Framework here. I decided to fix that, as I'd probably use it again.)


In our project we are using http://www.castor.org/ but just for small XML files. It's really easy to learn, needs just a mapping XML file (or none if the XML tags match perfectly class attributes) and it's done. It supports listeners (like callbacks) to perform additional processing. The cons: it is not a Java EE standard like JAXB.


you can try JAXB, with annotations its very handy and simple to do: Java Architecture for XML Binding.


I'm sometimes using Jericho, which is primarily HTML parser, but can parse any XML-like structure.

Of course it is only for the simplest XML operations, such as finding tags with given name, iterating through structure, replacing tags and its attributes, but aren't this the most use cases?


XML 문서를 작성하려면 xmlenc를 제안 합니다 . 그것은 카산드라 에서 사용됩니다 .

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

반응형