XML文档:
<components one="true" two="false" three="1.0.1" four="3.0" five="true"/>
使用PowerShell,我如何动态循环遍历components
元素中的不同属性。请记住,每次代码执行时,属性都可能不同。我可以“硬编码”属性名称等,但这样效率不高,在添加/删除新组件时必须不断更新。
答案 0 :(得分:0)
来自this page,并调整为提取属性而不是元素:
...
[System.Xml.XmlDocument] $xd = new-object System.Xml.XmlDocument
$file = resolve-path("yourfile.xml")
$xd.load($file)
$nodelist = $xd.selectnodes("/components/@*") # XPath is case sensitive
foreach ($attr in $nodelist) {
...
注意:我对PowerShell一无所知,但只是通过模式匹配并假设Microsoft的XPath像标准XPath一样工作,您应该能够创建包含属性节点的节点列表。即使这不能完全按照书面形式工作,也应该指向正确的方向。
答案 1 :(得分:0)
怎么样?
([xml]$(Get-Content .\yourfile.xml)).components
将为您提供以下输出
one : true
two : false
three : 1.0.1
four : 3.0
five : true
如果您想要更好地控制结果,请尝试以下方法:
foreach ($attr in ([xml]$(Get-Content .\yourfile.xml)).components.attributes)
{
$attr.Name #Attribute Name
$attr."#text" #Attribute Value
}