我正在使用PowerShell操作一些XML,并且在创建要添加到DOM中的元素时,我设法使set_InnerXML("contents")工作起来,但在向DOM中的节点添加一串节点时遇到了困难。
创建元素时的工作示例
$xml = New-Object XML
$xml.Load(".\file.xml")
$newnode= $xml.CreateElement("newelament")
$newnode.set_InnerXML("<stringnode>content</stringnode>")
$root = $xml.get_DocumentElement()
$result = $root.InsertAfter($newnode, $root.get_FirstChild())
$xml.Save(".\file.xml")不使用现有节点的示例
$xml = New-Object XML
$xml.Load(".\file.xml")
$xml.node1.node2.set_InnerXML("<stringnode>content</stringnode>")
$xml.Save(".\file.xml")如有任何关于如何做到这一点的建议,将不胜感激。
发布于 2011-02-04 18:21:09
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社区扩展的cmdlet。
还请注意,我捕获了$book xml节点,因为在执行完RemoveAll()之后,PowerShell不再将book视为XmlNode,而是将其视为字符串。似乎Xml适配器本身太可爱了。
https://stackoverflow.com/questions/4901179
复制相似问题