この関数を使用して、XMLノードの1つから属性 'type'を取得しています。これらのノードの少なくとも2つがXMLファイルにあります。私は、XMLオブジェクトの$ xmlDoc.config.local.setupに渡していると、私は見つけることを期待してるものを「タイプ」の下にアクセスXML属性がpowershellで失敗しますが、別のノードで失敗します
XMLのセクションでは、私の機能では、この
<config>
<local>
<setup>
<backup type="7Day"/>
<folder name="Backups" type="backup_root">
<folder name="DayTemplate" type="day_template">
<folder name="Logs"/>
<folder name="Objects">
<folder name="Applications"/>
</folder>
</folder>
</folder>
</setup>
</local>
</config>
のように見えます。使用方法は次のようになります
$type = Get-FolderNameByType -folders $xmlDoc.config.local.setup -type 'day_template'
最初のフォルダタイプ 'backup_root'は、コードをデバッグするときに表示されます。期待どおりに一致しない場合、2番目の 'day_template'は決して見つかりません。 foreachループは何らかの理由でそれを過ぎてスキップしてしまいます
function Get-FolderNameByType
{
param
(
[Object]
$folders,
[Object]
$type
)
foreach ($folder in $folders.folder)
{
if ($folder.type)
{
if ($folder.type -eq $type)
{
return $folder.name.tostring()
}
}
}
}
私はこの問題は、私はXMLを解析し、どのようにそれが実際にメモリで編成されますが、私はそれを把握することはできませんよどのように関係するすべてのものを持っていると確信しています。どんな助けも大歓迎です。
ありがとうございました。それがトリックでした。私はこれらのエントリのいくつかがXML内でネストされていることを忘れていました。それを指摘してくれてありがとう。 – todd1215