2016-06-28 48 views
0

我有一個腳本:獲取內容:新行

(Get-Content .\test.xml).replace('VALUE', 'MY_VALUE') | Set-Content .\test.xml 
(Get-Content .\test.xml).replace('VALUE_01', 'MY_VALUE_01') | Set-Content .\test.xml 

當我看到結果文件:

MY_VALUEMY_VALUE_01

是否有可能作出新的線路某種這樣的:

MY_VALUE 
MY_VALUE_01

XML:

<VALUE>TEST</VALUE><VALUE_01>TEST_1</VALUE_01> 

任何想法?

+0

('VALUE','MY_VALUE \ n')也許? –

+0

你能提供test.xml文件嗎? –

+0

嗨,我已經得到了調用WebRequest在一行後的結果測試 TEST_1,但我需要替換標籤名稱後,使其在兩行 – mulrus

回答

0

看來我發現soloution:

(get-content .\test.xml) -replace 'VALUE',"`nVALUE_01" | set-content .\test.xml 
(get-content .\test.xml) -replace 'VALUE_01',"`nMY_VALUE_01" | set-content .\test.xml 
1

發現這個試圖編寫XML的文件時獲得回車。我想我會添加我的解決方案,以防其他人在這裏尋找這個答案。

到目前爲止唯一的答案是不理想的,因爲它會在標籤本身中添加額外的字符,如果xml數據用於其他任何內容,可能會產生意想不到的後果。

我相信一個更好的答案是讓powershell將xml當作xml並使用xml對象公開的save方法。 save方法寫入格式良好的xml。

$fileContents = [xml]((Get-Content .\test.xml) -replace "VALUE","VALUE01") 
$fileContents.save(.\test.xml) 

如果你想要做保存文件前雙取代,它看起來繁瑣,但在本質上只是添加另一個-replace和周圍的括號對的。

$fileContents = [xml](((Get-Content .\test.xml) -replace "VALUE1","VALUE01") -replace "VALUE2","VALUE02") 
$fileContents.save(.\test.xml) 

如果您希望將其作爲單行紙板,它可能看起來像這樣,第二個替換被刪除的易讀性和行長度。

([xml]((Get-Content .\test.xml) -replace "VALUE","VALUE01")).save(.\test.xml) 

我個人認爲用多行代碼更好,當它開始變得越來越複雜時,便於閱讀和修改。