2011-10-31 23 views
0

私はこの単純なXML文書を持っています。可能であれば、select-xmlを使用して、("foo","bar")("baz","zab")のペアを抽出したいと思います。それはどれほどのもので、いかにですか?XPathを使用してXMLから兄弟テキストを抽出する方法は?

<?xml version="1.0" encoding="UTF-8"?> 
<tag> 
    <outer> 
    <a>foo</a> 
    <b>bar</b> 
    </outer> 
    <outer> 
    <a>baz</a> 
    <b>zab</b> 
    </outer> 
</tag> 

私が午前問題はselect-xmlの連続呼び出しが使用できないようですので、ちょうど2つのリストをビュン、select-xmlの以前の呼び出しのコンテキストと私の知る限り、それは未定義であるから返されたノードの順序を失うということです。あるいは、それによって返されるノードの順序がドキュメントの順序であると間違っていますか?

答えて

2

あなたがファイルを読み取ることができます。その後、

$xml = [xml](Get-Content .\test.xml) 

と使用:

$xml.tag.outer 

またはこのように:Select-Xml

foreach ($outer in $xml.tag.outer) 
{ 
    $outer.a 
    $outer.b 
} 

Clear-Host 

$InputText = @" 

<?xml version="1.0" encoding="UTF-8"?> 
<tag> 
    <outer> 
    <a>foo</a> 
    <b>bar</b> 
    </outer> 
    <outer> 
    <a>baz</a> 
    <b>zab</b> 
    </outer> 
</tag> 
"@ 

$xml = [xml]($InputText) 

$nodes = Select-Xml -Xml $xml -XPath "//outer" 

foreach ($node in $nodes) 
{ 
$node.node.a 
} 
+0

@JPBland:これは素晴らしい作品です! DOMのような方法でノードにアクセスできるかどうかはわかりませんでした。 – wilx

関連する問題