1

一連の VOD メタ データ ファイル (XML) を扱っています。私のxmlのスキーマを定義するADI.DTDがあります。

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"[]>

どんな入力でも大歓迎です

4

1 に答える 1

1

キャリッジ リターンを保持するには、保存する前にこのプロパティを設定してみてください。

$xmlDoc.PreserveWhitespace = $true

角かっこは有効な XML であり、悪影響を与えることはありません。このSOの質問を参照してください:

XmlDocument.Save() は、doctype 宣言に空の角括弧を挿入します

于 2012-05-18T18:46:34.737 に答える