XML 文档:
<components one="true" two="false" three="1.0.1" four="3.0" five="true"/>
使用 PowerShell,我如何动态循环遍历components
元素中的不同属性。请记住,每次代码执行时属性都可能不同。我可以“硬编码”属性名称等,但这效率不高,必须随着新组件的添加/删除而不断更新。
XML 文档:
<components one="true" two="false" three="1.0.1" four="3.0" five="true"/>
使用 PowerShell,我如何动态循环遍历components
元素中的不同属性。请记住,每次代码执行时属性都可能不同。我可以“硬编码”属性名称等,但这效率不高,必须随着新组件的添加/删除而不断更新。
从这个页面抄袭并调整以提取属性而不是元素:
...
[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 一样工作,您应该能够创建一个包含属性节点的节点列表。即使这不完全按照书面说明工作,它也应该为您指明正确的方向。
关于什么
([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
}