属性の長いリストを持つ XML ファイルをフォーマットするにはどうすればよいですか?

属性の長いリストを持つ XML ファイルをフォーマットするにはどうすればよいですか?

現在、属性の長いリストを持つ要素を含む XML ファイルを扱っています。インデントされている要素のみを使用して XML ファイル全体を再インデントしようとするとxmllint --format myfile.xml、属性は 1 行のままになります。

属性を含む XML の再フォーマットをサポートするプログラム (コマンド ライン、Windows、または GNU/Linux) はありますか?

たとえば次のような XML です:

<root>
  <node attribute1="some long attribute value" attribute2="some long attribute value" attribute3="..."/>
</root>

出力は次のようになります:

<root>
  <node attribute1="some long attribute value"
        attribute2="some long attribute value"
        attribute3="..."/>
</root>

答え1

善意から「コマンドライン ツール」を探すのは問題ありませんが、残念ながら、この問題の本当に実行可能な解決策は、自分でコードを書くか、少なくとも既存のコード (XML パーサー/ジェネレーターなど) を活用することだと思います。コメントには、探している書式設定スタイルを正確に実現できるかどうかわからない、試すことができる方法をいくつか投稿しました。非常に近いが、完全には実現できない場合は、おそらく「ほぼ」目的のプログラムのソース コードを編集するのが最善策です。もちろん、プログラミング言語をまったく知らない場合は、少し行き詰まる可能性があります。

これらの解決策はすべて「可能」だと言っています。なぜなら、属性を希望通りにフォーマットしたとしても、それ以外ある意味ではしない必要な変換をすべて指定しないと、振り出しに戻ります。変換要件をすべて指定していないため、どれが受け入れられるかは推測することしかできません。そのため、うまくいくものが見つかるまで 1 つずつ試してみるか、既存のコードを活用して小規模なプログラムを記述して自分で作成する必要があります。

プログラミングなしで可能な解決策

グラフィカルユーザーインターフェイス

コマンドライン

  • XMLTidy(最終更新 2005 年、古い可能性があります)
  • ドム4j(「プログラミング」はすでに SO の回答で完全に説明されているため、ここに含まれています)

プログラミングによる可能な解決策

  • 次のいずれかを使用して、独自のカスタム プログラムを作成します。
  • ゼクセス
  • ドム4j
  • サックス
  • libxml
  • EclipseがXMLを解析するために使用する基礎ライブラリ。これにより、XMLをプログラムでフォーマットし、Eclipseオプションに表示されるカスタマイズされたフォーマットルールを設定できるようになります。

... XML を希望どおりに処理します。

参照これそれで質問です。

最後に、これらの技術のいずれかを含むプログラムの作成に真っ先に取り組みたい場合、コミュニティの助けが必要な場合は、1つ選択されたXMLパーサー/ジェネレーター/ライブラリスタックオーバーフローそしてないSuperUser で。ここでは主に、既存のプログラムの使用に関する質問を扱います。

関連情報