使用powershell进行XML(特定DTD)编辑的问题

时间:2012-05-18 18:31:16

标签: xml powershell dtd

我正在处理一堆VOD元数据文件(XML)。有一个ADI.DTD定义了我的xml架构。

我正在尝试使用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 个答案:

答案 0 :(得分:1)

要保留回车,请在保存之前设置此属性:

$xmlDoc.PreserveWhitespace = $true

方括号是有效的XML,不应有任何负面影响。看到这个问题:

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