我創建這樣一個XmlDocument:保存格式良好的XML從PowerShell的
$doc = New-Object xml
然後,節點填充它後,我將它保存:
$doc.Save($fileName)
的問題是,它不將XML聲明添加到文檔的開頭,導致格式錯誤的文檔。換句話說,它只保存一個片段。我怎樣才能給它添加一個正確的XML聲明?
我創建這樣一個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")
你也可以用$ doc.AppendChild添加$ decl – 2015-10-15 15:35:28
FYI缺乏一個XML聲明不會馬由於XML文件不是必需的元素,因此XML文件格式不正確。 – 2011-06-04 22:37:18