XMLを編集する適切な方法は、文字列ではなくXMLドキュメントとして処理することです。これはXMLファイルが特定の書式を維持することが保証されていないためです。どんな編集もコンテキスト認識でなければならず、文字列置換はそうではありません。 3つのeqvivalent XMLフラグメントを考えてみましょう:要素名にwhitespacingが異なっており、it's legal
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host >
<wsdl-host >${jboss.bind.address:127.0.0.1}</wsdl-host >
注意がいくつかを追加します。実際には、実装の多くは、単に要素の値で改行を破棄し、よりなので、次の二つが設定パーサーに同じ結果を提供する可能性があるもの:
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
<wsdl-host>${jboss.bind.address:127.0.0.1}
</wsdl-host>
それは本当に処理するために、あまり意味がありません。文字列としてのXML、それは?
幸いにも、PowershellにはXMLファイルの組み込みサポートがあります。単純なアプローチは、あなたがPowerShellを使用することはできませんし、バッチスクリプトで立ち往生している場合は、あなたが本当にサードパーティのXML操作プログラムを使用する必要が
# Mock XML config
[xml]$x = @'
<root>
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
</root>
'@
# Let's change the wsdl-host element's contents
$x.root.'wsdl-host' = '${jboss.bind.address:0.0.0.0}'
# Save the modified document to console to see the change
$x.save([console]::out)
<?xml version="1.0" encoding="ibm850"?>
<root>
<wsdl-host>${jboss.bind.address:0.0.0.0}</wsdl-host>
</root>
、そうのようなものです。
行1はバッチ、残りはPowerShellです。 –
バッチスクリプトで書きたい – venky
XMLファイルを一括して編集したくない。私を信じて。 –