gpt4 book ai didi

xml - Powershell System.Xml.XmlElement 但我使用 System.Xml.XmlDocument?

转载 作者:数据小太阳 更新时间:2023-10-29 02:17:24 26 4
gpt4 key购买 nike

我的 PowerShell 脚本中不断出现以下异常:

Method invocation failed because [System.Xml.XmlElement] does not contain a method named CreateElement'.

但据我所知,我正在使用 System.Xml.XmlDocumenthttps://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)
}

XML 文件是在我启动此脚本之前:

<layout>
<nodes enviroment="[uknown]">
</nodes>
</layout>

我希望结果变成:

<layout>
<nodes enviroment="develop">
<node name="Hello world" />
</nodes>
</layout>

最佳答案

让我们看看这一行:

$xmlDoc.layout.nodes.CreateElement("Node")

这是调用方法 CreateElement(...)在对象上 $xmlDoc.layout.nodes .我们可以将它分成两行,如下所示:

$something = $xmlDoc.layout.nodes
$something.CreateElement("Node")

我们知道$xmlDocSystem.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)

关于xml - Powershell System.Xml.XmlElement 但我使用 System.Xml.XmlDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47474952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com