如何使用PowerShell更改XML Element属性的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PowerShell更改XML Element属性的值?相关的知识,希望对你有一定的参考价值。
我试图从XML标记访问和更改特定属性
XML:
<office>
<staff branch="Hanover" Type="sales">
<employee>
<Name>Tobias Weltner</Name>
<function>management</function>
<age>39</age>
</employee>
<employee>
<Name>Cofi Heidecke</Name>
<function>security</function>
<age>4</age>
</employee>
</staff>
<staff branch="London" Type="Technology">
<employee>
<Name>XXXX</Name>
<function>gement</function>
<age>39</age>
从上面的例子我想打印分支属性,然后想要在所有整个XML中使用一个值(如纽约)更改它,并使用下面的代码来执行该操作
$xml=New-Object XML
$xml.Load("C:FE6Work.xml")
$node=$xml.SelectNodes("/office/staff")
write-output $node.branch
$node.branch="New York"
但得到一个错误说明无法找到该元素。
有人可以帮忙吗?
答案
请尝试以下方法:
$nodes = $xml.SelectNodes("/office/staff");
foreach($node in $nodes) {
$node.SetAttribute("branch", "New York");
}
这将迭代SelectNodes()返回的所有节点并修改每个节点。
另一答案
您可以直接在[xml]
对象中访问属性,如下所示:
# C: emp> $xml = [xml](Get-Content C:FE6Work.xml)
# C: emp> $xml.office.staff
branch Type employee
------ ---- --------
Hanover sales {Tobias Weltner, Cofi Heidecke}
London Technology {XXXX, Cofi}
# C: emp> $xml.office.staff | foreach{$_.branch = "New York"}
# C: emp> $xml.office.staff
branch Type employee
------ ---- --------
New York sales {Tobias Weltner, Cofi Heidecke}
New York Technology {XXXX, Cofi}
另一答案
如果我们从控制台获取属性并更改其值?
$path=Read-Host -Prompt 'Enter path of xml file'
[xml]$xmldata = get-content "$path"
$tag = Read-Host -Prompt 'Enter tag'
$value = Read-Host -Prompt 'Enter value'
$xmldata.InstallConfig.$tag="$value"
$xmldata.Save($path)
以上是关于如何使用PowerShell更改XML Element属性的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PowerShell 中使用 Rest API 创建服务更改
如何从 xml 过滤以使用 powershell 获取启动持续时间?
如何在 PowerShell 中使用 XmlReader 流式传输大/巨大的 XML 文件?
如何使用powershell将数据插入XML childelement [duplicate]