powershell - 需要从命令提示符中从 xml 中提取属性值
问题描述
需要从 XML 中提取属性 1'st HouseNo 属性并在变量中使用该属性以在另一批次中重用。
我尝试过使用 findstr 但无法需要特定值。我的 XML 如下所示。
<Homes>
<Home>
<House id="R91958E89-39D6-467C-A149-1674CA7A6D6E" Address="XYZ" MEMBER="10"/>
……
解决方案
从字面上看,有大量的示例脚本,整个网络上都有解释和展示如何处理这个用例的文档......
示例:https ://www.red-gate.com/simple-talk/sysadmin/powershell/powershell-data-basics-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
($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
推荐阅读
- javascript - 有没有办法让浏览器要求用户允许弹出窗口?
- c# - 如何通过 C#(实体框架)获取行的 MAX ID
- python - boto3 - 列出名称包含的子文件夹中的文件
- laravel - Laravel Eloquent - 不要返回关系
- rxjs - RxJs Subject 让我们先处理新的订阅
- forms - symfony 表单自定义选择类型小部件名称
- r - 如何为 R shinyWidgets > prettyToggle > label_on(和 label_off)换行文本
- matlab - 在调试模式下在命令窗口中选择性地显示标量值
- javascript - 查找引用为数字的单个 google 工作表位置
- json - 带有数据类的 Kotlin Gson