PS> $xml = [xml](Get-Content ~\foo.xml)
PS> $xml | Format-Xml
<root>
<book>
<chapter1 />
<chapter2 />
</book>
</root>
Обновление : использование свойств InnerXml / InnerText изменяет содержимое узла, но, похоже, не изменяет DOM для добавления новых элементов в качестве узлов XmlNodes. Для создания новых узлов, которыми можно манипулировать с помощью DOM, используйте соответствующие методы XmlDocument Create
, например ::
$book = $xml.root.book
$xml.root.book.RemoveAll()
$book -eq $xml.root.book
$intro = $xml.CreateElement("Intro")
$book.AppendChild($intro) > $null
$para = $xml.CreateElement("Para")
$intro.AppendChild($para) > $null
$xml | Format-Xml
Примечание. Format-Xml
- это командлет из Расширения сообщества PowerShell .
Также обратите внимание, что я перехватываю узел $book
xml, потому что после выполнения на нем RemoveAll()
PowerShell больше не рассматривает book
XmlNode, а вместо этого строку. Похоже на то, что адаптер Xml слишком хорош для его блага.