首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点上的PowerShell set_InnerXML

节点上的PowerShell set_InnerXML
EN

Stack Overflow用户
提问于 2011-02-04 17:44:49
回答 1查看 5.7K关注 0票数 1

我正在使用PowerShell操作一些XML,并且在创建要添加到DOM中的元素时,我设法使set_InnerXML("contents")工作起来,但在向DOM中的节点添加一串节点时遇到了困难。

创建元素时的工作示例

代码语言:javascript
复制
$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")

不使用现有节点的示例

代码语言:javascript
复制
$xml = New-Object XML
$xml.Load(".\file.xml")
$xml.node1.node2.set_InnerXML("<stringnode>content</stringnode>")
$xml.Save(".\file.xml")

如有任何关于如何做到这一点的建议,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2011-02-04 18:21:09

代码语言:javascript
复制
PS> $xml = [xml](Get-Content ~\foo.xml)
PS> $xml | Format-Xml
<root>
  <book>
    <chapter1 />
    <chapter2 />
  </book>
</root>

更新:使用InnerXml/InnerText属性修改节点的内容,但似乎不修改DOM以将新元素添加为XmlNodes。要创建可以使用DOM操作的新节点,请使用适当的XmlDocument Create方法,例如:

代码语言:javascript
复制
$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适配器本身太可爱了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4901179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档