Как извлечь родной текст из XML с помощью XPath? - PullRequest
0 голосов
/ 31 октября 2011

У меня есть этот простой XML-документ. Я хочу раскрыть пары ("foo","bar") и ("baz","zab"), используя, если это вообще возможно, просто select-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 теряют контекст предыдущего вызова select-xml, и AFAIK порядок узлов, возвращаемых им, не определен, поэтому простое сжатие двух списков кажется непригодным. Или я ошибаюсь, что порядок возвращаемых им узлов - это порядок в документе?

1 Ответ

2 голосов
/ 31 октября 2011

Вы можете прочитать файл:

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

И затем использовать:

$xml.tag.outer

Или как это:

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

С Select-Xml:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...