2009-08-12 9 views
2

DOMオブジェクト(またはxmlを含む文字列)があるとします。どのような方法でも、各属性が新しい行に表示されるようにxmlをシリアル化することは可能ですか?xmlのシリアル化中に新しい行に各属性を配置する

これは私が望む出力されます:ソリューション場合は、標準のJava APIの一部の好ましい

<parent> 
    <anElement 
     attrOne="1" 
     attrTwo="2" 
     attrThree="3" 
    /> 
</parent> 

が、私は、そのような機能がそこに利用可能でない疑いがある、または私は間違っていますか?

NewLineOnAttributesと呼ばれる.NET Frameworkのシリアライザのプロパティが見つかりました。私が探しているのは、同等のものですが、javaにあります。

+0

XMLは空白にとらわれないため、スタイルシートを使用してそのような特定の表示形式を実行しないでください。 –

+0

@Nick Holt 実際、xsltを使用してプログラムでxml domオブジェクトを変更しています。後のステップでは、変換されたオブジェクトを直列化します。私はシリアライゼーション後に何があるのですか:a)元々の空白が残っていた空行(b)元の文書の属性間の行区切りが消えてしまった。 – Alderath

答えて

0

XOMライブラリにはSerializerクラスがあり、これを上書きして任意の形式で出力できます。

0

特定の機能を提供するJava用のXML APIについてはわかりません。私はJDOMとXOMのソースコードをチェックしました。それらはすべて同じ行に属性を表示し、それをオーバーライドするための特別なフックを提供しません。

XOMとJDOMの両方がXML(それぞれXMLOutputterSerializerを、)直列化のための特定のクラスを持っている、との両方のクラスは、属性のシリアライズを処理するための方法を保護したり、公開しているので、あなたがしたい場合、あなたは、これらのクラスをサブクラス化することができ適切なメソッドをオーバーライドして、必要に応じて属性書式を制御します。

標準のJava APIに関しては、それを忘れて、そのことはかなり厄介です。

1

パーサーは、これを行うことができますDecentXML

+0

このライブラリのライセンスでは、「特定の書面による事前の許可なしに、このソフトウェアから派生した製品を宣伝または宣伝するために、<団体名>またはその貢献者の名前を使用することはできません。つまり、A社がB社のDecentXMLを使用している場合、A社はA社が提供する製品としてB社のプログラムを販売することはできませんか?もしそうなら、これは絶対に選択肢ではありません。 (私は法的問題に関連するテキストが嫌いです。英語の主要なコードの難読化です) – Alderath

+0

私が理解しているように、私の同意なしに自分の名前で商品を宣伝することはできません。 –

+0

私の悪いです。私は文書をあまりにも速くスキミングし、<組織>がパーサーを利用する会社を参照していると間違って推測しました。実際にはDecentXMLライブラリを提供する組織を指します。 – Alderath

関連する問題