我必须解析下面的文件,并在报告中显示一些标签。
<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
我正在尝试对此进行改进,因为此代码取决于“文件名”是第一个属性。如何更改显示带有AdapterAttribute.Value
的{{1}}?
我尝试了以下操作,如您所见,它没有显示“文件名”的任何内容。
AdapterAttribute.Name = "Filename"
Name Filename ---- -------- C1 C2
答案 0 :(得分:0)
不知道您是否要进入Xpath表达式...(区分大小写)
(select-xml "/CommChannelQueryResponse/CommChannel/AdapterAttribute" file.xml).node
Name Value
---- -----
Filename a.txt
Directory /dir1
ArchiveDirectory /archive1
(select-xml "/CommChannelQueryResponse/CommChannel/AdapterAttribute[Name/text()='Filename']" file.xml).node
Name Value
---- -----
Filename a.txt