我可以使用 powershell 将节点添加到现有 XML 中吗?
这是我的:
<agentList>
<newAgent>
<name>Justice, Kari</name>
<mu>4690</mu>
<agentData>
<group>
<description>GROUP_DESCRIPTION</description><value>GROUP_NAME</value>
</group>
</agentData>
</newAgent>
</agentList>
我需要添加这个:
<group><description>ACSR System Logon</description><value></value></group>
<group><description>Current Call Type</description><value></value></group>
<group><description>OMS</description><value></value></group>
<group><description>RIO Log-in</description><value></value></group>
<group><description>Site</description><value></value></group>
这里:
<agentList>
<newAgent>
<name>Justice, Kari</name>
<mu>4690</mu>
<agentData>
<group>
<description>GROUP_DESCRIPTION</description><value>GROUP_NAME</value>
<====== HERE
<====== HERE
<====== HERE
<====== HERE
</group>
</agentData>
</newAgent>
</agentList>
我可能在 XML 上有不止一个用户,所以我想使用 FOREACH 行..但我有点迷失了在 powershell 中使用 xml...如果有人可以分享一些想法,我会很乐意使用它。 ..
最佳答案
应该是这样的:
$GroupList = @{"Mickey" = "mouse";"Minnie" = "mouse";"Goofy" = "dog"}
$xml=[xml](get-content .\yourfile.xml)
$xml | Select-Xml -XPath '/agentList/newAgent/agentData' | foreach-object{$_.node.removeall()} #clear group section
$groupNode = $xml.createelement("group")
foreach ($description in $($GroupList.keys))
{
$descNode = $xml.createelement("description")
$descNode.setattribute("value",$description)
$groupNode.appendchild($descNode)
$valueNode = $xml.createelement("value")
$valueNode.setattribute("value",$GroupList[$description])
$groupNode.appendchild($valueNode)
}
$xml.selectsinglenode("agentList/newAgent/agentData").appendchild($groupNode)
$xml.save("C:\YourPathHere\test.xml")
** 此代码假定“group”元素已存在于“.\yourfile.xml”中。
关于xml - 通过 powershell 将数据附加到现有的 xml 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751230/