我在PowerShell脚本中不断收到以下异常:
方法调用失败,因为[System.Xml.XmlElement]不包含名为CreateElement'的方法.
但据我所知,我正在使用System.Xml.XmlDocument?
https://msdn.microsoft.com/en-us/library/fw1ys7w6(v=vs.110).aspx
我究竟做错了什么?
$file = "file.xml"
$xmlDoc = [System.Xml.XmlDocument](Get-Content $file)
if ($xmlDoc) {
$xmlDoc.layout.nodes.SetAttribute("environment", "develop"); #this works
$newNode = $xmlDoc.layout.nodes.CreateElement("Node")
$newNode.SetAttribute("name", "Hello world")
$xmlDoc.AppendChild($newNode)
$xmlDoc.Save($systemConfigFile)
}
Run Code Online (Sandbox Code Playgroud)
XML文件在我启动此脚本之前:
<layout>
<nodes enviroment="[uknown]">
</nodes>
</layout>
Run Code Online (Sandbox Code Playgroud)
我期待结果te成为:
<layout>
<nodes enviroment="develop">
<node name="Hello world" />
</nodes>
</layout>
Run Code Online (Sandbox Code Playgroud)
我们来看看这一行:
$xmlDoc.layout.nodes.CreateElement("Node")
Run Code Online (Sandbox Code Playgroud)
这是CreateElement(...)在对象上调用方法$xmlDoc.layout.nodes.我们可以把它分成两行,如下所示:
$something = $xmlDoc.layout.nodes
$something.CreateElement("Node")
Run Code Online (Sandbox Code Playgroud)
我们知道这$xmlDoc是一个System.Xml.XmlDocument对象,但是什么类型的对象是$something什么?它不是指整个文档,而是指<nodes>元素.从错误消息中,我们了解到它实际上是一个System.Xml.XmlElement对象.
几行了,你做相反的错误:你叫AppendChild上$xmldoc的时候,居然要其追加到特定元素.
所以,首先我们需要$xmlDoc用来创建新元素; 然后我们可以使用$xmlDoc.layout.nodes(我之前称之为$something)来说明我们想要放置新元素的位置:
$newNode = $xmlDoc.CreateElement("Node")
$newNode.SetAttribute("name", "Hello world")
$xmlDoc.layout.nodes.AppendChild($newNode)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |