要素ノードから属性を抽出したXMLファイルを処理しようとしています。私はヘッダー値が存在する場合はそれを抽出し、その "グループ"のすべての型属性を返しますが、存在する場合にのみそれを返します。私はそれをどうやって行うのかはかなり分かりません。ヘッダー値を取得することはできますが、ヘッダー値を持つ「グループ」との関連付けだけではうまくいかないことがあります。私はグループが間違った用語であると確信しています。親ノードからヘッダを取得したいのとほぼ同じですが、親には格納されません。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
私は現在取得しています出力:私は希望
TITLE HEADER TYPE ----- ------ ---- Header1 header Title1 Header1 link Title2 Header1 link Title3 Header1 link Title200 Header1 link Header2 header Title300 Header2 link Title301 Header2 link
出力(ないヘッダがTitle200
のために示されていない):
TITLE HEADER TYPE ----- ------ ---- Header1 header Title1 Header1 link Title2 Header1 link Title3 Header1 link Title200 link Header2 header Title300 Header2 link Title301 Header2 link
提案をありがとうしかし、(用語は適切ではない場合は、再度、謝罪)ヘッダーテキストが同じ「グループ」のものに対して、リストに表示されていないので、これは を私が探していた出力を与えるものではありませんTITLEヘッダタイプ ----- ------ ---- ヘッダ1ヘッダタイトル1リンク タイトル2リンク TITLE3リンク Title200リンク ヘッダ2のヘッダ Title300リンク Title301リンク – Orielton