コマンドラインからXMLをきれいに印刷するにはどうすればいいですか? 質問する

コマンドラインからXMLをきれいに印刷するにはどうすればいいですか? 質問する

関連している:(UNIX) シェル スクリプトで JSON をきれいに印刷するにはどうすればよいですか?

XML を人間が読める形式でフォーマットする (UNIX) シェル スクリプトはありますか?

基本的には、次のものを変換します。

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>

... 次のようなものに変換します:

<root>
    <foo a="b">lorem</foo>
    <bar value="ipsum" />
</root>

ベストアンサー1

xmllintからlibxml2

xmllint --format file.xml

(Debianベースのディストリビューションでは、libxml2-ユーティリティパッケージ)

xml_ppからXML::小枝 モジュール

xml_pp < file.xml

(Debianベースのディストリビューションでは、xml-twig-ツールパッケージ)

XMLスターレット

xmlstarlet format --indent-tab file.xml

きちんとした

tidy -xml -i -q file.xml

パイソンのxml.dom.ミニドム

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
  python -c 'import sys, xml.dom.minidom; print(xml.dom.minidom.parseString(sys.stdin.read()).toprettyxml())'

サクソンリント(私自身のプロジェクト)

saxon-lint --indent --xpath '/' file.xml

サクソン語-HE

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
  java -cp /usr/share/java/saxon/saxon9he.jar net.sf.saxon.Query \
       -s:- -qs:/ '!indent=yes'

キシデル

xidel --output-node-format=xml --output-node-indent -se . -s file.xml

(クレジット:レイノ

すべてのコマンドの出力:

<root>
  <foo a="b">lorem</foo>
  <bar value="ipsum"/>
</root>

おすすめ記事