2011-10-24 11 views
1

現在、XMLファイルの一部をHTMLエンコードする必要のある短いSEDスクリプトに取り組んでいます。スクリプトは現在、次のようになります。SED - XMLファイルの特定のタグ間のHTMLエンコード

sed.exe "/<messageData>/,/<\/messageData>/ {/<messageData>/b;/<\/messageData>/b; s/</\&lt;/g; s/>/\&gt;/g; }" %1 >%2 

だから、基本的に、とタグの間に、<と>ですべて<と>を置き換えます。

このスクリプトは、それが

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Messages> 
    <messageData> 
     <test>DATA</test> 
    </messageData> 
</Messages> 

私は必要なものである

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Messages> 
    <messageData> 
     &lt;test&gt;DATA&lt;/test&gt; 
    </messageData> 
</Messages> 

として出てくるで、かなり印刷XMLで完璧に動作します。

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Messages><messageData><test>DATA</test></messageData></Messages> 

そして、このフォーマットで、スクリプトは、もはや作品:私の問題は、私はプロセスを必要とするファイルがきれいに印刷されていないことである、すべてのものはこのように、単一の行にありません。 両方の形式で動作するようにスクリプトを変更する可能性はありますか?

出力形式には影響しません.SEDは使用するスクリプトエンジンです。

私はちょうど各ファイルの後に改行を挿入する別のSEDスクリプトを作成して、それから私が今作成したスクリプトを実行することができたと思います。しかし、私はそれが非常に効率的なパフォーマンス賢明ではないだろうと推測しています(各ファイルを2回通過)。

提案がありますか?

よろしく ダニエル

+0

あなたの研究はここでsedとxmlについて教えてくれましたか?がんばろう。 – shellter

+0

私はオリジナルの投稿で言ったように、SEDを使うかどうかは私の選択肢ではありません。 – Daniel

+0

@ダニエル、それから誰かにその選択をすることを教えてください。一般的にsedやregexpsを使ってXMLを扱うのは、本当に悪い考えです。 XML固有のツールが存在する理由があります。 – svick

答えて

1

誰かが同じ問題につまずくことを起こる場合、これは、我々はそれを解決する方法です。私はそれが良いとは限りません。もっと良い解決策が使えるようになるまでしなければならないのでしょうか?

sed.exe -i "s/\(>\)\(<\)/\1\n\2/g" %1 
sed.exe "/<messageData>/,/<\/messageData>/ {/<messageData>/b;/<\/messageData>/b; s/</\&lt;/g; s/>/\&gt;/g; }" %1 >%2 
+0

sedは決して美しいものではありませんが、私はいつもそれを使用しています;-)。処理時間に関心がある場合は、2つのsedをパイプで連鎖させて各ファイルの時間を短縮することができます。最後に、あなた自身の答えを受け入れ、追加のポイントを得ることができます。がんばろう。 – shellter

+0

乾杯、私は自分の答えを受け入れることができなかった – Daniel

関連する問題