PowerShell-在同一元素名上具有冲突的多个名称空间的xml文件
与PowerShell 5.1相关 我在玩XML来演示如何处理冲突的名称空间。以下是我创建的示例:PowerShell-在同一元素名上具有冲突的多个名称空间的xml文件,powershell,xml-namespaces,Powershell,Xml Namespaces,与PowerShell 5.1相关 我在玩XML来演示如何处理冲突的名称空间。以下是我创建的示例: <Employees> <ms:Employee id='1' xmlns:ms="MicrosoftEmployees"> <FirstName>Bill</FirstName> <LastName>Gates</LastName> </ms:Employee>
<Employees>
<ms:Employee id='1' xmlns:ms="MicrosoftEmployees">
<FirstName>Bill</FirstName>
<LastName>Gates</LastName>
</ms:Employee>
<ms:Employee id='2' xmlns:ms="MicrosoftEmployees">
<FirstName>Paul</FirstName>
<LastName>Allen</LastName>
</ms:Employee>
<ap:Employee id='1' xmlns:ap="AppleEmployees">
<Name>Steve Jobs</Name>
</ap:Employee>
<ap:Employee id='2' xmlns:ap="AppleEmployees">
<Name>Steve Wozniak </Name>
</ap:Employee>
</Employees>
输出:
id ms FirstName LastName
-- -- --------- --------
1 MicrosoftEmployees Bill Gates
2 MicrosoftEmployees Paul Allen
1
2
是否有更合理的输出
似乎PowerShell锁定了它看到的Employee元素的第一个模式,然后无法显示Apple employees的Name元素。这实际上是有道理的,但我只是想看看是否有一些我可能会错过的更有趣的东西来处理这件事
我知道我可以使用SelectSingleNodes和XPath,但我只是想看看PowerShell是否以及如何“开箱即用”地处理这个问题
如果我反转代码:
$xmlDoc.Employees.Employee[2]
$xmlDoc.Employees.Employee[3]
$xmlDoc.Employees.Employee[1]
$xmlDoc.Employees.Employee[0]
那么输出是:
id ap Name
-- -- ----
1 AppleEmployees Steve Jobs
2 AppleEmployees Steve Wozniak
1 ms:Employee
2 ms:Employee
使用“格式列表”查看所有属性。格式表不能很好地处理不同的属性集
$xmldoc.employees.employee | format-list
id : 1
ms : MicrosoftEmployees
FirstName : Bill
LastName : Gates
id : 2
ms : MicrosoftEmployees
FirstName : Paul
LastName : Allen
id : 1
ap : AppleEmployees
Name : Steve Jobs
id : 2
ap : AppleEmployees
Name : Steve Wozniak
很酷,但是有没有办法让它们在页面上横穿(水平而不是垂直)?同样有趣的是,即使我试图在4个不同的write语句上独立打印它们,格式表还是会以某种方式将它们进行比较,并将它们与一个公共标题合并在一起。
$xmldoc.employees.employee | format-list
id : 1
ms : MicrosoftEmployees
FirstName : Bill
LastName : Gates
id : 2
ms : MicrosoftEmployees
FirstName : Paul
LastName : Allen
id : 1
ap : AppleEmployees
Name : Steve Jobs
id : 2
ap : AppleEmployees
Name : Steve Wozniak