【发布时间】:2018-03-28 15:28:12
【问题描述】:
所以我不得不说我是使用 PowerShell 解析 XML 的新手。话虽如此,我该如何组合多个 -XPath 以便我可以完成构建我的表达式报告。请告诉我,我已经尝试了几种组合,但似乎都不适用于命名空间 XML。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" niaVersion="12.0.0.756" xmlns="http://something.com/something/hotfix/manifest">
<releases>
<release name="mid November 2017">
<hotfixes>
<hotfixref name="DE002" description="" defectSuite="n/a" supportEscalation="n/a" internalNotes="" customer="n/a">
<packages>
<package type="All" />
</packages>
<components>
<component type="" />
<component type="" />
</components>
</hotfixref>
<hotfixref name="DE5728" description="" defectSuite="DS001" supportEscalation="n/a" internalNotes="" customer="n/a">
<packages>
<package type="Full" />
</packages>
<components>
<component type="" />
</components>
</hotfixref>
</hotfixes>
</release>
</releases>
</manifest>
[xml]$xdoc=Get-Content $PSScriptRoot\Manifest.xml
$ns = @{test ="http://something.com/something/hotfix/manifest"}
$ver = Select-Xml -Xml $xdoc -XPath '//test:release' -Namespace $ns
$hfu = Select-Xml -Xml $xdoc -XPath '//test:hotfixref' -Namespace $ns
foreach ($v in $ver){
$v | Select-Object -ExpandProperty node
$hfu | Select-Object -ExpandProperty node
【问题讨论】:
-
您的 XML 是什么样的?请向我们展示我们需要什么来复制您的问题。 Creating an MCVE
-
如果 XML 使用命名空间,我不知道您为什么需要查看 XML。 Select-Xml -Xml $xdoc -XPath 可以在单个节点上找到,但我只想问您是否知道一种将多个节点组合到 Xpath 的方法,请告诉我。
-
它确实有助于在
$ns中指定正确的命名空间。更新的问题。不确定您对组合多个节点的意思。你有你想要什么(输出)的例子吗? -
嗯,这确实是要求我们提供一种方法来复制您所看到的问题。
-
嗨 EBGreen,我可能对这个问题没有明确表示,我在上面的代码对于单个节点来说可以正常工作。这意味着如果我只想查看发布的所有值,它将向我显示所有值。如果我想查看修补程序的所有值,它将显示与这些标签关联的所有值。我想要做的是一个带有版本的标题行,然后它正下方将具有来自 hotfixref ex 的值。释放值 /r /n hfref DE001 blah blah blah
标签: powershell xml-namespaces select-xml