首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在同一元素名上具有冲突的多个命名空间的PowerShell - xml文件

在同一元素名上具有冲突的多个命名空间的PowerShell - xml文件
EN

Stack Overflow用户
提问于 2020-05-19 04:28:46
回答 1查看 40关注 0票数 0

与PowerShell 5.1相关

我尝试使用XML来展示如何处理冲突的名称空间。下面是我创建的示例:

代码语言:javascript
运行
复制
<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>

场景可能是将来自两个不同公司的数据组合在一起。

PowerShell演示计划:

代码语言:javascript
运行
复制
cls 
$filename = "c:\XMLClass\IntroSamples\Sample05_Simpler_Namespace.xml"
[xml]$xmlDoc = Get-Content $filename 

$xmlDoc.Employees.Employee[0]
$xmlDoc.Employees.Employee[1]
$xmlDoc.Employees.Employee[2]
$xmlDoc.Employees.Employee[3]

输出:

代码语言:javascript
运行
复制
id ms                 FirstName LastName
-- --                 --------- --------
1  MicrosoftEmployees Bill      Gates   
2  MicrosoftEmployees Paul      Allen   
1                                       
2                                       

有没有办法获得更符合逻辑的输出?

PowerShell似乎锁定了它为Employee元素看到的第一个模式,然后不能显示Apple employees的Name元素。这实际上是有道理的,但我只是检查一下是否有更花哨的东西来处理这个我可能遗漏的东西。

我知道我可以使用SelectSingleNodes和XPath,但我只是想看看PowerShell是否以及如何“开箱即用”地处理这个问题。

如果我反转代码:

代码语言:javascript
运行
复制
$xmlDoc.Employees.Employee[2]
$xmlDoc.Employees.Employee[3]
$xmlDoc.Employees.Employee[1]
$xmlDoc.Employees.Employee[0]

然后输出为:

代码语言:javascript
运行
复制
id ap             Name          
-- --             ----          
1  AppleEmployees Steve Jobs    
2  AppleEmployees Steve Wozniak 
1                 ms:Employee   
2                 ms:Employee 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-19 06:45:04

使用格式列表查看所有属性。格式表不能很好地处理不同的属性集。

代码语言:javascript
运行
复制
$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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61878445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档