【发布时间】:2017-01-31 19:30:32
【问题描述】:
我正在尝试处理从元素节点提取属性的 XML 文件(如下所示)。我还想提取标头值(如果存在),并将其与该“组”的所有类型属性一起返回,但前提是它存在。不过,我不知道该怎么做——我可以检索标题值,但无法弄清楚如何只与具有标题值的“组”相关联。我确定组是错误的术语,这几乎就像我想从父节点获取标题,但它没有存储在父节点中。
我已经包含了示例输出,希望能展示我试图解释的内容。
$xml = [xml]@"
<document document="test">
<elements>
<element type="header">Header1</element>
<element type="link" title="Title1" />
<element type="link" title="Title2" />
<element type="link" title="Title3" />
</elements>
<elements>
<element type="link" title="Title200" />
</elements>
<elements>
<element type="header">Header2</element>
<element type="link" title="Title300" />
<element type="link" title="Title301" />
</elements>
</document>
"@
$objs = @()
$nodes = $xml.SelectNodes("//*[@type]")
foreach ($node in $nodes) {
#$node.ParentNode.ToString()
$type = $node.Attributes['type'].value
if ($type -eq "header") {$header = $node.InnerText}
$title = $node.Attributes['title'].value
$obj = New-Object PSObject -Prop @{TYPE=$type;TITLE=$title;HEADER=$header}
$objs += $obj
}
$header = ""
$objs
我目前得到的输出:
标题标题类型
----- ------ ----
标头 1 标头
标题 1 标题 1 链接
Title2 Header1 链接
Title3 Header1 链接
Title200 Header1 链接
标头 2 标头
Title300 Header2 链接
Title301 Header2 链接
我想要的输出(Title200 没有显示标题):
标题标题类型
----- ------ ----
标头 1 标头
标题 1 标题 1 链接
Title2 Header1 链接
Title3 Header1 链接
Title200 链接
标头 2 标头
Title300 Header2 链接
Title301 Header2 链接
【问题讨论】:
标签: xml powershell