ストリップからのコメントのxmlファイルの、かわいい-印刷したりする事ができ
質問
私はこの巨大なxmlファイルを多く含みます。
きむすびにしていただきました"best way"グレーのクラムシェル型クランプは全てのコメントやく形式のxmlからlinuxコマンドがかかってしまいます。
解決
あなたがきちんと使用することができます。
$ tidy -quiet -asxml -xml -indent -wrap 1024 --hide-comments 1 tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<user username="qwerty" password="ytrewq" roles="manager-gui" />
</tomcat-users>
他のヒント
コメントの空のテンプレートを使用して、のXSLT変換アイデンティティを通して、あなたのXMLを実行します。
XMLコンテンツのすべて、コメントを除き、出力に渡されます。
niecely出力をフォーマットするためには、出力@インデント= "YES" を設定
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!--Match on Attributes, Elements, text nodes, and Processing Instructions-->
<xsl:template match="@*| * | text() | processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!--Empty template prevents comments from being copied into the output -->
<xsl:template match="comment()"/>
</xsl:stylesheet>
あなたはxmllint
ツールで見たいと思うかもしれません。これは、いくつかのオプション(かなり印刷を行いますどの--format
の1)を持っているが、私は、このツールを使ってコメントを削除する方法を見つけ出すことはできません。
また、あなたとしたい何かをするために、 XMLStarlet のコマンドラインツールの束をチェックしてくださいXML。その後の操作を行います。
xml c14n --without-comments # XML file canonicalization w/o comments
編集:OPは最終的にこのラインを使用します:
xmlstarlet c14n --without-comments old.xml > new.xml
を整理整頓しようといTomcatのserver.xml使用してい
sed 's/<!--/\x0<!--/g;s/-->/-->\x0/g' | grep -zv '^<!--' | tr -d '\0' | grep -v "^\s*$"
I.。
function tidy() {
echo "$( cat $1 | sed 's/<!--/\x0<!--/g;s/-->/-->\x0/g' | grep -zv '^<!--' | tr -d '\0' | grep -v "^\s*$")"
}
tidy server.xml
...のまま印刷、xmlなります。
注意:な作品が合理的にも簡単なもので失敗するCDATAブロックの一部です。でのみ使用制御xmlスクリプトが必要なことはありません必要なエスケープシングル <--
または -->
できます。
第sedマークのコメントの開始および停止と0x0文字、grepと -z
扱い0x0としての行区切り文字の検索ラインからのコメントでは、-v反転のフィルターは、多くの有意義にする。最後に、 tr -d
\0`をすべて削除してこれらの0x0、洗練させていきたいと思い、別のgrepを取り除空線出来上がり.
最善の方法は、正しく、すべてのあいまいなコーナーケースを処理するために、XMLパーサーを使用することです。あなたが迅速かつ汚い何かが必要な場合でも、Perlの正規表現を使用して短いのさまざまなソリューションがあります>十分であってもよい。