Я должен проанализировать файл ниже и отобразить несколько тегов в отчете.
<CommChannelQueryResponse>
<CommChannel>
<ChannelName>C1</ChannelName>
<AdapterAttribute>
<Name>Filename</Name>
<Value>a.txt</Value>
</AdapterAttribute>
<AdapterAttribute>
<Name>Directory</Name>
<Value>/dir1</Value>
</AdapterAttribute>
<AdapterAttribute>
<Name>ArchiveDirectory</Name>
<Value>/archive1</Value>
</AdapterAttribute>
...
</CommChannel>
<CommChannel>
...
</CommChannelQueryResponse>
Основываясь на другом сообщении в этом форуме, я попробовал следующее, и это работает.
[xml]$XmlDocument = Get-Content commchannels.xml
$XmlDocument.CommChannelQueryResponse.CommChannel |
Format-Table -Property @{L="Name"; E={$_.ChannelName}},
@{L="Filename";Expression={$_.AdapterAttribute.Value[0]}}
Name Filename
---- --------
C1 a.txt
C2 b.txt
Я пытаюсь улучшить это, так как этот код зависит от "Filename", являющегося первым атрибутом. Как я могу изменить это для отображения AdapterAttribute.Value
, который имеет AdapterAttribute.Name = "Filename"
?
Я попробовал следующее, и, как вы можете видеть, он ничего не отображает для имени файла.
$XmlDocument.CommChannelQueryResponse.CommChannel |
Format-Table -Property @{L="Name";E={$_.ChannelName}},
@{L="Filename";Expression={
$_.AdapterAttribute.Value | Where-Object $_.AdapterAttribute.Name = "Filename"
}}
Name Filename
---- --------
C1
C2