2012-05-18 48 views
1

我正在處理一堆VOD元數據文件(XML)。有一個ADI.DTD定義了我的XML的模式。問題與XML(特定的DTD)編輯與powershell

我試圖使用PowerShell編輯這個xml和更新/使用下面的一段PowerShell代碼更改標籤...

[System.Xml.XmlDocument]$doc = 
     new-object System.Xml.XmlDocument; 
    $doc.Load($strXMLFile); 
    $root = $doc.get_DocumentElement(); 
    $root.Fruit.Metadata.AMS.Name = $strName 
    $doc.Save($strXMLFile) 

雖然這是幾乎相同的我也想這樣做..

$xmlDoc = [XML](gc $strXMLFile) 
$xmldoc.Fruit.Metadata.AMS.Name = $strName 
$xmldoc.Save($strXMLFile) 

這個保存的變化比我想要的更多。它刪除了幾個回車符,並將這個奇怪的[]添加到我的DOCTYPE中。我不明白爲什麼它會這樣做,並且不知道對使用此XML的系統的下行影響。

<!DOCTYPE ADI SYSTEM "ADI.DTD"> 

<!DOCTYPE ADI SYSTEM "ADI.DTD"[]> 

任何投入表示讚賞

回答

1

爲了保持回車嘗試設置該屬性保存前:

$xmlDoc.PreserveWhitespace = $true 

的方括號是有效的XML和不該沒有任何負面影響。看到這個問題:

XmlDocument.Save() inserts empty square brackets in doctype declaration

+0

感謝您的快速回復。我不知道爲什麼我的搜索沒有把我引向這個明顯回答的問題。謝謝。 – Adi