2

XML ドキュメント:

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

componentsPowerShell を使用して、要素内のさまざまな属性を動的にループするにはどうすればよいでしょうか。コードが実行されるたびに属性が異なる可能性があることに注意してください。属性名などを「ハードコード」することはできますが、それは効率的ではなく、新しいコンポーネントが追加/削除されるたびに常に更新する必要があります。

4

2 に答える 2

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 に答える
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 に答える