【问题标题】:XML to Powershell Hashtable [duplicate]XML到Powershell Hashtable [重复]
【发布时间】:2018-11-24 08:47:56
【问题描述】:
<Test>
    <TLC>FWE</TLC>
    <Crew3LC>KMU</Crew3LC>
    <MyText>Hello World</MyText>
</Test>

你好,

在你上面看到我的 .xml 名称为“test.xml”。在下面,您会看到我的 powershell 开始。

我想要做的是以下,但我不知道从哪里开始。

我想从 .xml 文件中检索数据并将值保存到我的哈希表中。哈希表本身更像是一个模板,需要填充。

XML 的命名与哈希表 TLC = TLC 等相同,但我需要哈希表中 XML 的值。

我会使用 foreach 和 -matching 运算符以及我的过滤选择(哈希键、XML 名称、XML 名称值)来实现。

将 Hashkey 与 XML Name 匹配,如果 $true 则将 XML.Name.Value 保存到 Hashtable。

我希望你明白我的意思...我尝试了一些我的知识,但到目前为止一切都失败了。

你们能帮帮我吗?!

# XML Path
$XMLSource = "C:\Test\Test.xml"

# Tempalte Hashtable
$XMLTemplatevalues = @{

    TLC      = 'TLC'
    Crew3LC  = 'Crew3LC'
    MyText   = 'MyText'

}

# Get XML Content
[xml]$GetXMLContent = Get-Content $XMLSource

#HashKey
$XMLTemplatevalues.Keys

#XML Name
$GetXMLContent.DocumentElement.ChildNodes.Name

#XML Name - Value
$GetXMLContent.DocumentElement.ChildNodes.'#text'

【问题讨论】:

    标签: xml powershell merge


    【解决方案1】:

    一种适用于简单文档的简单解决方案,例如您问题中的文档 (PSv4+):

    $xmlDoc = [xml] (Get-Content -Raw "C:\Test\Test.xml")
    
    # Initialize the results hashtable; make it ordered to preserve 
    # input element order.
    $ht = [ordered] @{}  
    
    # Loop over all child elements of <Test> and create matching
    # hashtable entries.
    $xmlDoc.Test.ChildNodes.ForEach({ $ht[$_.Name] = $_.InnerText })
    
    # Output the resulting hashtable.
    $ht
    

    使用您的示例文档会产生:

    Name                           Value                                                                                                                                                
    ----                           -----                                                                                                                                                
    TLC                            FWE                                                                                                                                                  
    Crew3LC                        KMU                                                                                                                                                  
    MyText                         Hello World                                                                                                                                          
    

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      相关资源
      最近更新 更多