【发布时间】:2014-08-10 17:43:59
【问题描述】:
Xpath 新手,powershell 中级。昨天花了很多时间研究,我在 powershell -XPath 命令中找不到 xpath sum() 或 count() 表达式的单个示例。我将这篇文章详细地写成我的第一个 stackoverflow 问题,以便未来的人们可以从这篇文章中找到来自 XPert 的明确示例答案。
目标(2):
1. Count() 关键进程。
2. SUM() 关键进程处理的事务。
注意:powershell XPath 命令的输出应该是原始数字。
<units>
<unit>
<unitName>Generic Process Unit</unitName>
<attribute>
<name>Process Type</name>
<value>Critical Process</value>
</attribute>
<attribute>
<name>Transactions Processed</name>
<value>10</value>
</attribute>
</unit>
<unit>
<unitName>Generic Process Unit</unitName>
<attribute>
<name>Process Type</name>
<value>Trivial Process</value>
</attribute>
<attribute>
<name>Transactions Processed</name>
<value>7</value>
</attribute>
</unit>
<unit>
<unitName>Generic Process Unit</unitName>
<attribute>
<name>Process Type</name>
<value>Critical Process</value>
</attribute>
<attribute>
<name>Transactions Processed</name>
<value>5</value>
</attribute>
</unit>
</units>
我对 SUM 函数的最佳尝试。甚至没有尝试计数:
select-xml -path mine.xml -XPath '//attribute[value="Critical Process"]/../attribute[name="Transactions Processed"][sum(value)]' | Select-Object -ExpandProperty node | select Value
编辑:notepad++ XMLTool 插件的工作 XPath 如下,但仍需要等效的 Powershell(这在 Powershell 中不起作用):
sum(//attribute[value="Critical Process"]/../attribute[name="Transactions Processed"]/value)
勘误表: 它需要仅是 XPath 表达式的原因是我只使用 powershell 来构造和验证我的 XPath 字符串。最终目标是将这些字符串放入将实际使用 XPath 字符串的非 powershell 软件中。该软件使我无法验证 XPath,并且在我将其放入后需要 20 分钟才能判断它是否有效,因此我使用 powershell 作为我的测试平台。
我更改了项目名称、描述和删除的属性以使示例更简单。但是,我不知道“模式”字是否重要,所以这里是原始“值”行的示例。
<value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">Critical Process</value>
问题:
似乎需要稍微调整给定的 XPath 表达式才能在 Powershell 中工作。例如,在 -XPath '/xpath/node' 之后,您似乎总是需要以: '/text()' | 结尾。 Select-Object -ExpandProperty 节点 |选择值以实际查看您想要的输出。
Microsoft 有 XPath 文档和 Powershell 文档,但没有“Powershell 中的 XPath 表达式”文档。
大多数 Internet 表达式示例使用“Powershell + XPath”执行最低限度的 XPath 以获取数据对象,然后在 powershell 中使用 foreach 循环。
看起来命令语法可能对 XPath 版本 1、2 等有一些依赖性。
提前致谢。
【问题讨论】:
标签: xml powershell xpath