【问题标题】:Parsing XML file using PowerShell使用 PowerShell 解析 XML 文件
【发布时间】:2020-12-30 16:37:16
【问题描述】:

我是 Powershell 的新手,我不想获取此 xml 的所有 id(无法更改 xml 因为这只是我的问题的一个例证)

<?xml version="1.0" encoding="ISO-8859-1"?>
<List>
 <Person1>
    <Id>E00023</Id>
    <empName>Aadharsh</empName> 
 </Person1>
 <Person2>
    <Id>E00042</Id>
    <empName>Raksha</empName> 
 </Person2>
</List>

使用此代码,我只能得到 Person1 的 ID:

$XMLfile = 'C:\test.xml'
[XML]$empDetails = Get-Content $XMLfile
     
foreach($module in $empDetails.List.Person1){
Write-Host "Id :" $module.Id
}

我尝试了以下代码,但我不工作:( 问题是 Person1 和 Person2 是不同的名称。 我必须更改什么才能获得所有 ID?

$XMLfile = 'C:\test.xml'
[XML]$empDetails = Get-Content $XMLfile
 
foreach($module in $empDetails.List.$module){
Write-Host "Id :" $module.Id
}

【问题讨论】:

    标签: xml powershell parsing xml-parsing powershell-3.0


    【解决方案1】:

    你可以迭代XmlNode.ChildNodes:

    $XMLfile = 'C:\test.xml'
    
    [xml]$empDetails = Get-Content -Path $XMLfile
    
    foreach ($person in $empDetails.List.ChildNodes) {
        $person.Id
    }
    

    或者使用XmlNode.SelectNodes并展开InnerText

    $empDetails.List.SelectNodes("//Id").InnerText
    

    输出:

    E00023
    E00042
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2020-10-22
      • 2013-08-04
      • 2020-12-30
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多