2

XML 文档:

<components one="true" two="false" three="1.0.1" four="3.0" five="true"/>

使用 PowerShell,我如何动态循环遍历components元素中的不同属性。请记住,每次代码执行时属性都可能不同。我可以“硬编码”属性名称等,但这效率不高,必须随着新组件的添加/删除而不断更新。

4

2 回答 2

1

这个页面抄袭并调整以提取属性而不是元素:

...
[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 一样工作,您应该能够创建一个包含属性节点的节点列表。即使这不完全按照书面说明工作,它也应该为您指明正确的方向。

于 2013-08-08T18:58:34.343 回答
1

关于什么

([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
}
于 2013-08-10T05:45:18.957 回答