関連している:(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>