xml - 在 PowerShell 中报告 XML 节点
问题描述
我想要遍历一组 XML,然后将它们传递给可以打印的变量。
以下是数据示例:
<applications>
<size>75</size>
<application>
<name>Applications 1</name>
<path>/Applications/Utilities/Application 1</path>
<version>10.14</version>
</application>
<application>
<name>Application 2</name>
<path>/Applications/Utilities/Application 2</path>
<version>6.3.9</version>
</application>
</applications>
我在尝试输出它时看过使用ForEach-Object
,但无济于事。
[string]$applicationProperties = $API.applications.application | ForEach-Object {
$_.name
$_.path
$_.version
}
这可行,但将它们全部放在一行上,我希望它们打印在单独的行上,但我无法为$_
变量添加前缀。
例如,我想将名称/路径/版本数据保存到变量中
[string]$applicationProperties = $API.applications.application | ForEach-Object {
[string]$name_var = $_.name
[string]$path_var = $_.path
[string]$version_var = $_.variable
}
这给了我一个“应用程序”,但不是所有可能的对象。还提到即使我放下$name_var
它也没有访问该变量?我需要做些什么来访问该变量吗?
创建了这个$applicationProperties = "Application Name $($applicationProperties[0].name)"
$applicationProperties
但是当我打电话时Missing '=' operator after key in hash literal.
解决方案
使用XPathSelectNodes()
表达式而不是点访问,然后输出每个选定节点的名称和内部文本:
$API.SelectNodes('//application/*') | ForEach-Object {
'{0}={1}' -f $_.Name, $_.InnerText
} | Set-Content 'output.txt'
推荐阅读
- r - 通过两因素身份验证访问 Salesforce
- python - 确保分配不复制对象?
- reactjs - 使用 if 语句应用内联样式 (React)
- aws-lambda - 使用 Amazon AWS Lambda Function Serverless Image Handler Resizer 函数模板导致无 S3 访问
- batch-file - 批处理文件注释中的语法无效
- python-3.x - python3 pathlib mkdir 权限被拒绝
- react-native - 使用带有本机反应的谷歌地图api获取当前用户位置?
- python - 如何在不重新运行代码的情况下再次运行 UI
- mysql - 如何创建一个返回表行数的函数?
- c++ - 这些 PGM 文件是如何编码的?