0

既に生成された xml がいくつかあり、問題を引き起こしているアプリケーションは、適用されたスキーマに対して有効であるために特定の位置にある必要がある要素を追加する必要があります...

現在、2 つの問題があります。最初の 1 つは、位置をハードコーディングする必要があることです。しかし、はるかに大きいのは jdom です...コンテンツリストを印刷すると、次のようになります。

element1
text
element2
element4
text
element5

テキストノードは単なる空白であり、追加するすべての要素により、要素としてカウントされるだけのテキストノードの数がさらに予測できなくなります(追加される場合があるため)、要素3を追加するときは無視したいインデックス 2 では、element2 と element4 の間ではなく、この煩わしいテキストノードの後に​​続きます。

助言がありますか?最善の解決策は、スキーマに従ってあるべき場所に自動的に配置することですが、それは不可能だと思いますか?

アドバイスをありがとう :)

4

1 に答える 1

1

XML の JDOM モデルは非常に文字通りです... そうでなければなりません。一方、JDOM は、作業を容易にする方法で XML をフィルタリングおよび処理する方法を提供します。

あなたの場合、Element コンテンツをドキュメントに追加したいのですが、すべてのテキスト コンテンツは空白です ..... したがって、すべてのテキスト コンテンツを無視し、Element コンテンツのみを心配してください。

たとえば、3 番目の要素の前に新しい要素 nemt を挿入する場合は、次のことができます。

rootemt.getChildren().add(3, new Element("nemt"));

要素が整理されました....テキストはどうですか...

非常に簡単な解決策は、出力をきれいに印刷することです。

XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
xout.output(System.out, mydoc);

そうすれば、すべての空白が再フォーマットされて XML が「きれい」になります。

編集 - いいえ、スキーマに従って適切な場所に要素を自動的に挿入する JDOM の方法はありません....

ロルフ

于 2012-08-13T14:02:04.037 に答える