保存格式良好的XML从PowerShell的
问题描述:
我创建这样一个XmlDocument:保存格式良好的XML从PowerShell的
$doc = New-Object xml
然后,节点填充它后,我将它保存:
$doc.Save($fileName)
的问题是,它不将XML声明添加到文档的开头,导致格式错误的文档。换句话说,它只保存一个片段。我怎样才能给它添加一个正确的XML声明?
答
您需要使用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()
后来,通过调用StringBuilder对象的ToString方法,你可以看到下面的输出:
PS C:\> $sb.ToString()
<?xml version="1.0" encoding="utf-16"?>
<html>Value</html>
答
或者你可以使用CreateXmlDeclaration
方法上XmlDocument
例如:
$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")
+0
你也可以用$ doc.AppendChild添加$ decl – 2015-10-15 15:35:28
FYI缺乏一个XML声明不会马由于XML文件不是必需的元素,因此XML文件格式不正确。 – 2011-06-04 22:37:18