76

私は dom4j のようなものを探していますが、dom4j の疣贅がなく、ドキュメントが悪いか欠落しており、開発状況が停滞しているように見えます。

背景: 私は dom4j を使用し 支持してきましたが、ライブラリが最適とはほど遠いことを知っているため、それについて完全に正しいとは感じていません (例: XSLT 関連のStylesheetクラスのメソッドがどのように文書化されているかを参照してください; run( )String modeパラメータとして?)

要件: ライブラリは、純粋な JDK (およびパッケージ)を使用 する場合よりも基本的な XML 処理を容易にする必要があります。このようなもの:javax.xmlorg.w3c.dom

  • XML ドキュメントを (ファイルまたは文字列から) オブジェクトに読み込み、DOM を簡単にトラバースして操作し、XPath クエリを実行し、それに対して XSLT を実行します。
  • Java コードで XML ドキュメントを構築し、要素と属性とデータを追加して、最後にドキュメントをファイルまたは文字列に書き込みます。

私はdom4j が約束していることを本当に気に入っています。実際には、「XML、XPath、および XSLT を操作するための使いやすいオープン ソース ライブラリ [...] DOM、SAX、および JAXP を完全にサポートしています。」 : Java 5 を十分に活用し、不足しているドキュメントを追加します。しかし、残念なことに、よく見ると:

警告: dom4j 2.0 はプレアルファ段階です。コンパイルできない可能性が高いです。ランダムにコンパイルできる場合、実行できない可能性があります。たまに走ると突然爆発することがあります。dom4j を使用する場合は、バージョン 1.6.1 が必要です。本当。

...そして、ウェブサイトは長い間それを言っています. では、dom4j に代わる良い方法はありますか? 名前やリンクをダンプするだけでなく、好みのライブラリの正当な理由を提供してください。:-)

4

11 に答える 11

18

JDKに組み込まれているもの...いくつか追加されています。

はい、使用するのは面倒です。委員会によって明確に設計された W3C 仕様をモデルにしています。ただし、どこでも使用できます。これに落ち着けば、サードパーティのライブラリから来る「Dom4J が好き」、「JDOM が好き」、「StringBuffer が好き」という議論に出くわすことはありません。特に、そのような引数は、さまざまなライブラリを使用してさまざまなコードに変わる可能性があるため...

ただし、前述したように、少し拡張します。Practical XMLライブラリは、DOM の操作を容易にするユーティリティ クラスのコレクションです。XPath ラッパー以外には、ここで複雑なことは何もありません。ジョブごとに自分で書き直した一連のルーチンだけです。

于 2009-05-07T12:11:31.130 に答える
10

私はDom4jの代わりにXMLToolを使用してきましたが、かなりうまく機能しています。

XML Toolは、Fluent Interfaceパターンを使用して、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());

これはJava5用に作成されており、選択した要素に対して反復可能なオブジェクトを簡単に作成できます。

for (XMLTag xmlTag : tag.getChilds()) {
   System.out.println(xmlTag.getCurrentTagName());
}
于 2009-12-07T15:55:23.007 に答える
6

私はいつもjdomが好きでした。これは、DOM の構文解析よりも直感的に記述できるように作成されています (SAX の構文解析は常に扱いにくいように見えます)。

ミッションステートメント より:

Java API が XML を操作して、複雑、トリッキー、直感的でない、または首の痛みを伴うものにするやむを得ない理由はありません。JDOMTM は Java 中心であり、Java に最適化されています。Java のように動作し、Java コレクションを使用し、現在の Java 開発者にとって完全に自然な API であり、XML を使用するための低コストのエントリ ポイントを提供します。

それが私の経験です - ノードツリーのかなり直感的なナビゲーション。

于 2009-05-06T21:31:36.643 に答える
5

XStreamを使用します。これは単純なライブラリで、オブジェクトを XML にシリアライズして、再び XML に戻します。

注釈駆動型(JAXB など) にすることもできますが、非常にシンプルで使いやすい API を備えており、JSON を生成することもできます。

于 2009-05-06T21:56:24.773 に答える
3

@kdgregory による組み込みの回答に、JAXB ではない理由を追加します。

いくつかの注釈を使用すると、ほとんどの XML ドキュメントを非常に簡単にモデル化できます。つまり、おそらくものを解析してオブジェクトに入れるつもりですか?

JAXB 2.0 は JDK 1.6 に組み込まれており、他の多くの組み込み javax ライブラリとは異なり、これは非常に優れています (Kohusuke が取り組んでいるので、その良さはご存知でしょう)。

于 2011-04-02T13:44:59.737 に答える
1

私たちのプロジェクトでは、http://www.castor.org/を使用していますが、小さなXMLファイルのみを使用しています。学ぶのは本当に簡単で、マッピングXMLファイルだけが必要です(または、XMLタグがクラス属性と完全に一致する場合は必要ありません)。追加の処理を実行するためのリスナー(コールバックなど)をサポートします。短所:これはJAXBのようなJavaEE標準ではありません。

于 2009-05-06T21:42:21.313 に答える
0

非常に便利で簡単に実行できるアノテーションを使用して、JAXBを試すことができます。XMLバインディング用のJavaアーキテクチャ。

于 2012-01-22T00:43:13.583 に答える
0

XML ドキュメントを作成するには、xmlencをお勧めします。カサンドラで使用されます。

于 2012-07-12T06:14:03.467 に答える
0

主に HTML パーサーであるJerichoを時々使用していますが、XML のような構造を解析できます。

もちろん、指定された名前のタグの検索、構造の反復処理、タグとその属性の置換など、最も単純な XML 操作のためだけですが、これはほとんどの使用例ではないでしょうか?

于 2012-02-24T11:47:09.347 に答える