1

これが私がやろうとしていることです。

  1. XMLファイル全体を読み取ります(要素や属性の名前などは関係ありません)。
  2. 読み取ったXMLファイルをメモリに保存します。
  3. 読み取られたxmlファイルのいくつかの値を更新します。
  4. XMLファイルに書き戻します。

XMLStreamReaderを使用してXMLファイルを読み取ろうとしていますが、これまでに見たすべての例では、要素名を指定する必要があるようです。ただし、要素名は気にせず、エンティアXMLファイルをメモリに読み込みたいだけです。そして、私が読んでいるときにどのようにデータ型を保存すべきかわかりません。それらをDocumentデータ型に格納することを考えています。

XMLファイル全体を読み取り、読み取ったコンテンツをmemeoryに保存する方法に関する提案はありますか?

ありがとう。

4

3 に答える 3

3

これを行う最も簡単な方法は、JAXBを使用することです。xjcXMLスキーマからJavaクラスを生成するために使用できます。次に、JAXBを使用してデータを非マーシャリング(ロード)し、他のオブジェクトと同じように(ゲッター/セッターを使用して)Javaオブジェクトを操作し、XMLファイルにマーシャリング(保存)します。

DOMを直接使用することもできますが、DOMを操作することは、XML構造を直接ミラーリングするPOJOを操作するよりもはるかに面倒です。

于 2012-07-13T19:05:08.600 に答える
0

XMLStreamReaderは、XMLのストリームのようなビューを提供するイベント指向のパーサーです。どうやらXMLツリー全体をメモリに保存したいので、最適なオプションはJDOMです。

public Document parse(Reader in) {
  return new SAXBuilder().build(in);
}

JAXBに対するJDOMの利点は、ナビゲーションです。のような単純な式を使用して、要素をXMLツリーの奥深くまでフェッチできます"//my-elem"。JAXBを使用すると、この単純な結果を得るために、1つの大量のコードとネストされたループを記述します。

(言うまでもなく、XMLのXMLスキーマがないと、JAXBはあなたと話すことさえできません。)

于 2012-07-13T19:22:07.240 に答える
0

JAXBが過剰な場合があり、DOMはいくつかの操作で問題ありません。

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = f.newDocumentBuilder();
Document doc = builder.parse(new File("test.xml"));
于 2012-07-13T19:28:20.343 に答える