需要从Command promt中提取xml中的属性值[关闭]

问题描述 投票:-5回答:1

需要从XML中提取属性1'st HouseNo属性,并在变量中使用该属性以在另一批中重用。

我已尝试使用findstr但无法获取特定值。我的XML如下所示。

<Homes>
<Home>
    <House id="R91958E89-39D6-467C-A149-1674CA7A6D6E" Address="XYZ" MEMBER="10"/>

......

powershell batch-file command-prompt
1个回答
3
投票

网上有大量的示例脚本和文档,解释并展示了如何处理这个用例......

示例:https://www.red-gate.com/simple-talk/sysadmin/powershell/powershell-data-basics-xml

......包括对本网站的讨论。

尽管XML片段不完整,您应该提供更完整的XML片段,但可以假设它看起来像什么。

除此之外,你没有展示你真正尝试过的东西,这意味着你需要完整的代码工作,你应该让我们真正能够指导你。

尽管如此,PowerShell还有内置的XML cmdlet来处理XML文件......

Get-Command -Name '*xml*' | ft -a

CommandType Name              Version Source
----------- ----              ------- ------
Cmdlet      ConvertTo-Xml     3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet      Convert-XMLtoJSON 5.0.0.1 Sorlov.PowerShell
Cmdlet      Export-Clixml     3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet      Import-Clixml     3.1.0.0 Microsoft.PowerShell.Utility

# Get examples of how to use Select-Xml
Get-Help -Name Select-Xml -Examples

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-xml?view=powershell-6

($MyXml | Select-Xml -XPath "//House").Node.id

# Results
R91958E89-39D6-467C-A149-1674CA7A6D6E

...或者你可以使用.Net名称空间,并选择你所追求的数据。

[xml]$MyXml = @"
<Homes>
<Home>
    <House id="R91958E89-39D6-467C-A149-1674CA7A6D6E" Address="XYZ" MEMBER="10"/>
</Home>    
</Homes>
"@ 

# Get the house id
$MyXml.Homes.Home.House.id

# Or 
$MyXml.SelectSingleNode('//House').id

# Results for both commands
R91958E89-39D6-467C-A149-1674CA7A6D6E
© www.soinside.com 2019 - 2024. All rights reserved.