【发布时间】:2016-10-11 04:35:39
【问题描述】:
我正在编写 PowerShell 脚本来修改 XML 文件。我需要添加一个新元素并为其添加属性。我尝试使用CreateElement() 和AppendChild() 方法,但没有帮助。下面是我的示例输入 XML 文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Subnet xmlns="http://google.com">
<Id>Network_106</Id>
<Name>Network_106</Name>
<Description>
</Description>
<NetworkAddress>173.24.106.0</NetworkAddress>
<NetworkMask>255.255.255.0</NetworkMask>
</Subnet>
我需要在如下描述之后添加名为DeliveryServices 的新元素,并在其中添加Id 元素。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Subnet xmlns="http://google.com">
<Id>Network_106</Id>
<Name>Network_106</Name>
<Description>
</Description>
<DeleveryServices>
<Id>172.22.22.22</Id>
</DeleveryServices>
<NetworkAddress>173.24.106.0</NetworkAddress>
<NetworkMask>255.255.255.0</NetworkMask>
</Subnet>
我尝试了下面的代码,但它不起作用。
[xml]$xdoc = Get-Content "F:\Sample.xml"
$child = $xdoc.CreateElement("DeleveryServices")
$xdoc.Subnet.AppendChild($child)
$xdoc.Subnet.DeleveryServices.Id = "172.22.22.22"
我收到以下错误。并且DeleveryServices 元素也在 XML 文件的末尾创建。我想要它在描述之后。
在此对象上找不到属性“Id”。验证该属性 存在并且可以设置。 在行:44 字符:17 + $xdoc.Subnet.DelevyServices.Id = "172.22.22.22"
【问题讨论】:
-
“它不起作用” 是不够的。解释发生了什么,显示实际输出,并包含任何错误消息。
-
@JimGarrison 添加了错误详情。
-
我在 XML 的任何地方都看不到
<DeploymentServices>节点。您不能在不存在的节点上设置属性。 -
我需要创建一个名为“DeliveryServices”的新节点..对不起我的错误..编辑了问题@JimGarrison
-
呃,根据您发布的示例,
Id是一个元素,而不是一个属性。显然你应该像其他元素一样创建它。
标签: xml powershell