編輯XML的正確方法是將其作爲XML文檔處理,而不是字符串。這是因爲XML文件不能保證保持特定的格式。任何編輯應該是上下文感知和字符串替換不是。考慮三個eqvivalent XML片段:
<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 >
注意,在元素名稱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>
這真的沒有多大意義處理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>
如果您不能使用PowerShell和被卡住批處理腳本,你真的需要使用第三方XML處理程序。
第1行是批處理,其餘部分是PowerShell。 –
我想僅在批處理腳本中編寫 – venky
您不想批量編輯XML文件。相信我。 –