Сохранить правильно сформированный XML из PowerShell - PullRequest
9 голосов
/ 01 июня 2011

Я создаю XmlDocument, как это:

$doc = New-Object xml

Затем, после заполнения узлов, я сохраняю:

$doc.Save($fileName)

Проблема в том, что он не добавляет объявление XML в начало документа, что приводит к искажению документа. Другими словами, это только сохраняет фрагмент. Как я могу добавить к нему правильное объявление XML?

Ответы [ 2 ]

15 голосов
/ 01 июня 2011

Или вы можете использовать метод CreateXmlDeclaration на XmlDocument например ::10000 *

$doc = new-object xml
$decl = $doc.CreateXmlDeclaration("1.0", $null, $null)
$rootNode = $doc.CreateElement("root");
$doc.InsertBefore($decl, $doc.DocumentElement)
$doc.AppendChild($rootNode);
$doc.Save("C:\temp\test.xml")
11 голосов
/ 01 июня 2011

Вам нужно использовать класс XmlTextWriter для форматирования вывода.Вот пример, хотя вы можете захотеть развить его для любых конкретных потребностей, помимо добавления заголовка:

$doc = [xml]"<html>Value</html>"
$sb = New-Object System.Text.StringBuilder
$sw = New-Object System.IO.StringWriter($sb)
$writer = New-Object System.Xml.XmlTextWriter($sw)
$writer.Formatting = [System.Xml.Formatting]::Indented
$doc.Save($writer)
$writer.Close()
$sw.Dispose()

Позже, вызвав метод ToString для StringBuilder объект, вы можете увидеть следующий вывод:

PS C:\> $sb.ToString()
<?xml version="1.0" encoding="utf-16"?>
<html>Value</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...