我已经坚持了一段时间,无法弄清楚我错过了什么。我有一个XML文件,它是相机服务器配置的导出。我希望将用户与他们有权使用的相机进行匹配,但我很难弄清楚如何使用。
以下是XML的示例:
<?xml version="1.0" encoding="UTF-8"?>
<ExportedConfiguration verification="-11111111">
<config timestamp="2017-05-30-08-35-21-533">
<Users>
<userlist>
<user0>
<username>Smith, John</username>
<cameras>
<UserCamera-fd346f0a-362c-4171-b015-b3884db7d60f>
<cameraid>Inside-Camera1</cameraid>
</UserCamera-fd346f0a-362c-4171-b015-b3884db7d60f>
</cameras>
</user0>
<user1>
<username>Smith, Jane</username>
<cameras>
<UserCamera-07798ce7-b3fd-4cae-a0cd-339de22f38ab>
<cameraid>Outside-Camera1</cameraid>
</UserCamera-07798ce7-b3fd-4cae-a0cd-339de22f38ab>
</cameras>
</user1>
</userlist>
</Users>
问题是所有内容都属于<user#>
,并且相机信息属于<UserCamera-####>
内的随机<user#>
节点。我想我需要某种基于foreach
的{{1}}循环,但不知道从哪里开始。
[编辑] 这是我到目前为止所拥有的。跑步时它只显示&#34; cameraid&#34;而不是实际名称:
<user#>
答案 0 :(得分:0)
这样的事情应该有效:
$file.SelectNodes("//Users/userlist/*") | ForEach-Object {
[PSCustomObject]@{
Username = $_.username
Cameras = $_.cameras.ChildNodes.cameraid -join ', '
}
}