Powershell XML:属性是否存在会改变获取值的方式

2024-03-02

我在 Windows 8 PC 上使用 Powershell 3.0。我有一些简单的 XML 文件,其内容如下(没有 foobar 部分,稍后会出现):

<MyData>
    <Version>1.2a</Version>
    <Version foobar="1">3.4b</Version>
    <Version>5.6c</Version>
</MyData>

现在,我已将所有版本提取到一个数组中,执行以下操作:

[xml] $FileData = Get-Content .\thefile.xml
[array]$theVersions = $FileData.MyData.Version | % {$_}

一切都运转良好,until我添加了foobar="1"XML 文件——这似乎破坏了一切。我进行了一些挖掘,并尝试了涉及 #text 和 InnerText 的内容:

[array]$theVersions = $FileData.MyData.Version | % {$_.'#text'}

但是这个仅有效为了一块与 foobar 一起;另外两个似乎看不见。自然,我could向文件中的所有数据添加一些(任何)属性,但这不是一个可行的解决方案。

我的问题:有没有一致的方式从这些 XML 节点中读取 Value(或 #text、InnerText,无论您喜欢如何称呼它)是否存在属性吗?事实上,对于我的脚本来说,属性的存在或缺失需要被视为未知。

后续:由于 Keith 的建议和一些调整,我能够使用 Select-XML 来解决我的问题。由于我确实需要该属性(我最初忽略了该详细信息,因为我认为它并不重要),所以我最终得到了如下格式的内容:

[xml] $FileData = Get-Content .\thefile.xml
[array]$theVersions = (Select-Xml $FileData -XPath '//MyData/Version').Node | % {if ($_.foobar -ne $null) { "$($_.'#text') And Foobar $($_.foobar)"} else {$_.'#text'} }
$theVersions

结果输出:

1.2a
3.4b And Foobar 1
5.6c

感谢大家!希望这个问题及其解决方案对其他人有帮助!


如果你想使用Select-Xml,您将这样做:

$xml = [xml]@'
<MyData>
  <Version>1.2a</Version>
  <Version foobar="1">3.4b</Version>
  <Version>5.6c</Version>
</MyData>
'@

(Select-Xml $xml -XPath '//Version/text()').Node.Value

这将找到任何名为Version,如果您想将其限制为仅以下元素MyData将 XPath 更改为/MyData/Version/text()。这假设MyData是 root/doc 元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell XML:属性是否存在会改变获取值的方式 的相关文章

  • SSRS ReportViewer 与 XML 嵌入数据源相关的问题

    我有 C WPF 应用程序 我想在 ReportViewer 控件中显示 SSRS 报告 本地报告文件中嵌入了 XML 数据源 从 SQL Server Business Intelligence Development Studio 运行
  • 在 iOS 上创建 Excel XLS 文件

    我正在尝试创建 Excel 格式的报告 准备通过电子邮件发送 到目前为止 我发现最好 最简单的方法是创建一个 xml 文档 如下所示 并将其另存为 xls
  • 当首选项屏幕启动时,Android 应用程序立即崩溃

    我一直在为应用程序开发首选项屏幕 但我什至没有让它在崩溃之前显示屏幕 我已经检查了几个关于共享首选项的教程 我的代码与他们的类似 但没有任何效果 我认为问题出在我的preferences xml 文件中 因为我注释掉了除了Preferenc
  • PowerShell 中的 SVN 输出编码

    我正在尝试在 PowerShell 脚本内的字符串中捕获 SVN 日志 在命令行上 输出的编码是正确的 但是当我将其捕获到字符串中时 它就不是正确的 PS C sandbox gt svn log r1804 https myserver
  • 在 SQL 中搜索 XML 列

    我有一个 XML 文档来存储 Oracle 数据库中的记录 表 CourseXML 将包含 Record Number int XML Type int XMLDoc clob etc 我想通过 XML 标签在 XMLDoc 列中进行搜索
  • 解析没有标记名的 xml

    我有一个 xml 文件
  • 在 powershell 3 中美化 json

    给定一个标准 json 字符串值 jsonString baz quuz cow moo cud foo bar 我怎样才能让这一切都漂亮的换行符 最好没有强力正则表达式 到目前为止我发现的最简单的方法是 jsonString Conver
  • 什么是@”运算符?

    我在互联网上搜索了这意味着什么 包括 and 单独 正是在这个code https gist github com jakeballard 11240204 Win32ShowWindowAsync Add Type memberDefin
  • 在 cygwin 和 powershell 中查看不同的 gem 列表

    我用的是gem listpowershell 和 cygwin 中的命令都显示不同的 gem 列表 Cygwin 显示 LOCAL GEMS bundler 1 2 3 json 1 7 5 minitest 2 12 1 rake 0 9
  • 用于 RSS feed 解析的 Objective-C 库?

    我正在为 iOS 应用程序寻找一个 Objective C 库 该库将解析并显示 RSS 提要中的文章 具体来说 我正在寻找为新闻网站制作一个应用程序 如果可能的话 该框架应该能够使用各种 RSS XML 结构 嗯 有两个不同的新闻网站 一
  • 将 < 转换为 < xml 文档

    我已读取 XML 文件并转换为 NSXMLDocument 对象 但是 由于节点的字符串内容中存在 我如何将文件作为普通 XML 文件写入 其中 lt 将被 感谢致敬 列宁 当 的时候 lt 字符出现在文本节点中 它将被序列化为 lt 当您
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G
  • 需要 XSL 文件将内部 xml 测试格式转换为 Junit 格式(xUnit Plugin for jenkins)

    我正在尝试编写一个 XSL 将我的 XML 转换为 jenkins 采用的 JUNIT 格式 见下文 我的 xml 看起来像这样 我有几个 类 例如 数据中心 或 网络
  • xpath 根据子值选择父级

    我希望选择状态为 实时 的每个活动 我在 Drupal 的 XPath XML 解析器中使用它 并具有上下文基本查询和 xpath 查询字段 上下文 这是基本查询 所有其他查询都将在此上下文中运行 我目前有 语境 event status
  • 从 XElement 中删除属性

    请考虑这个 XElement
  • Java DocumentBuilder - XML 文件中的缩进错误

    我尝试使用 DocumentBuilder 用 Ja va 编写一个简单的 XML 文件 我期望 XML 文件如下所示
  • 使用 Powershell 添加 IIS 8.5 自定义日志记录字段

    带有 IIS 8 5 的 Windows Server 2012 R2 允许使用增强型日志记录自定义日志字段 http www iis net learn get started whats new in iis 85 enhanced l
  • Powershell Invoke-SSHCommand:使用“1”个参数调用“EndExecute”时出现异常

    我正在尝试通过 powershell 中的 Posh SSH 模块连接到 Netscaler SDX 服务器 以搜索特定文件 然后下载它 如果我用 putty 连接到服务器 它就可以工作 然后我可以输入 shell 来打开普通的 bash
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • PowerShell 解锁/卸载导入的 CSV

    早晨 我想问题就在标题里 我有一个脚本 它通过导入 CSV 的文件夹结构运行 与每个脚本一起工作 然后在完成后尝试删除它们 遗憾的是 其中很多都锁定在 PowerShell 上 而我删除它们的唯一方法就是关闭 PS 有什么方法可以卸载csv

随机推荐

  • 如何自动启动所需的服务和应用程序?

    我正在编写我的第一个 erlang 应用程序 我想按照在 erlang 生态系统中应该完成的方式做事 我的应用程序依赖于已启动的 ssl inets 服务和 log4erl 应用程序 目前我在 erlang shell 中手动启动它们 之后
  • WPF MVVM prism 中的 ASP.net 类似基于表单的身份验证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在开发 WPF MVVM prism 应用程序后 我想实现身份验证 因为它是基于 ASP NET 表单的身份验证 我想限制用户进入需要授权
  • 支持不可变类的 ORM

    哪个 ORM 支持以下领域模型不可变的 types 我想编写如下所示的类 或 Scala 等效项 class A private final C c not mutable A B b init c A doSomething B b bu
  • 更新由另一个减速器管理的状态

    在我的 React 应用程序中 我的appReducer管理全局内容 例如通知 用户信息等 应用程序中的模块之一是库存模块 它有自己的减速器 即inventoryReducer 在 redux 商店中 我组合了所有减速器 当用户输入库存时
  • FactoryGirl 创建用户,但保存点在测试开始前被释放

    我正在为spec requests user pages specs运行rspec测试 require spec helper describe User pages do subject page describe home page d
  • 我可以从 Chrome 扩展程序访问站点的 localStorage 吗?

    我的 chrome 扩展有两种状态 1 某些站点在localStorage 另一个域 中有身份验证数据 所以我必须显示主窗口 2 没有身份验证数据 因此我必须显示带有登录名和密码表单的窗口 为了定义是否提供身份验证数据 我想检查他的 loc
  • 如何使用pdfkit ios 11打开pdf文件?

    我正在尝试使用新的 iOS 11 框架 pdfkit 打开 PDF 文件 但我无法做到这一点 所以帮助我使用 pdfkit 框架打开文件 先感谢您 这是基于 Objective C 的示例 Ensure PDFKit framework i
  • 推送通知警报文本的最大长度是多少?

    iOS 推送通知的警报文本的最大长度是多少 The 文档 https developer apple com go id push notifications指出通知有效负载总共必须低于 256 字节 https developer app
  • PWA 的推送通知或 Web 推送通知

    首先 我想说我一直在研究推送通知和网络通知 但我有点困惑 我从这里读到 PWA 的推送通知不适用于 Safari 上的 iOS iPhone 从 PWA 向 iOS 发送推送通知 https stackoverflow com questi
  • 如何拥有一个写入服务总线队列的异步函数?

    使用 Azure WebJobs SDK 我想创建一个异步函数 该函数将接收 ServiceBus 队列输入并写入 ServiceBus 队列输出 异步方法不能有 out 参数 例如在 BlobStorage 上 似乎可以通过使用 Stre
  • 解析 nmap 结果

    我正在 Linux 上使用 Python 2 6 开发一个项目 我在终端使用 nmap 来获取这些扫描结果 我在一个字符串中得到了这个结果 Starting Nmap 6 47 http nmap org at 2015 06 28 23
  • 创建 AMI 需要很长时间

    我正在为具有 100G 文件的服务器创建 AMI 已经过去一个多小时了 事情还没有结束 AMI 仍然显示待处理 有什么问题吗 我应该怎么办 只是为了让其他人知道 这个过程可能需要非常非常长的时间 我的 100 GB AMI 大约需要 2 5
  • Excel 2010:查找两个日期时间之间的秒数

    我有一个专栏Cal Date time 其中包含通话的日期和时间 如下所示 A B C D Number Call Date Time Duration in Sec 123 2010 01 10 01 07 24 465000 123 2
  • Android 中应用程序“资产”文件夹的路径是什么?

    我正在开发一个 Android 应用程序 希望在 apk 中捆绑一个视频文件 mp4 以便在启动应用程序时我可以播放简短的介绍视频 不幸的是 我无法弄清楚应该将该视频文件放置在项目文件夹中的哪个位置 以及如何访问它 文件的路径 我在用vid
  • Pandas:iterrow 循环的替代方案

    我有一个在 pandas 中运行的小函数 当我运行时会抛出 ValueErrorif x in y陈述 我看到了类似的问题 建议使用布尔索引 isin and where 但我无法将任何示例适应我的情况 任何建议将非常感激 附加说明 gro
  • jQuery :包含 html

    我有一个表 其中包含逗号分隔的数字列表 如下所示 td 72 76 81 td 我正在尝试选择表格单元格don t包含特定的数字 该选择器有效 td not contains 76 table 问题是可能存在包含 576 或 761 等的行
  • 如何编写无分支 std::vector 扫描?

    我想对数组编写一个简单的扫描 我有一个std vector
  • CouchDB 视图:MapReduce 中可以接受多少处理?

    我一直在尝试使用 CouchDB 进行 MapReduce 一些示例显示了映射归约函数中可能存在的一些繁重逻辑 在一种特殊情况下 他们在映射内执行 for 循环 在发出您选择的文档之前 MapReduce 是否会在每个可能的文档上运行 如果
  • void Function(int) 不是 void Function(dynamic) 的有效重写

    class Parent
  • Powershell XML:属性是否存在会改变获取值的方式

    我在 Windows 8 PC 上使用 Powershell 3 0 我有一些简单的 XML 文件 其内容如下 没有 foobar 部分 稍后会出现