2010-05-26 2 views
2

У меня есть документ XML с этой структурой:PowerShell: Получить определенный внутренний элемент XML

<Fruits> 
    <Fruit> 
     <Code>1</Code> 
     <Name>Apple</Name> 
    </Fruit> 
</Fruits> 

Что такое лучший способ получить <Fruit> элемент по его коду (или любого другого поля) в PowerShell 1 код ? (не XPath, так как он поддерживается только в PowerShell 2)

Спасибо!

ответ

3

Вы можете использовать XPath в V1, как это, если вы предпочитаете:

$xml = [xml](get-content $xmlFile) 
$xml.SelectSingleNode("//Fruit[2]") 

Code              Name 
----              ---- 
2               Orange 
4

Вы можете получить доступ к узлам, как объекты из Posh V1

$xml = [xml]"<Fruits> 
    <Fruit> 
     <Code>1</Code> 
     <Name>Apple</Name> 
    </Fruit> 
    <Fruit> 
     <Code>2</Code> 
     <Name>Orange</Name> 
    </Fruit> 
</Fruits>" 
$orange = $xml.Fruits.Fruit | ? { [int]$_.Code -eq 2 } 
+0

Первый - спасибо. При попытке запустить скрипт: $ xml = [xml] "1 Apple 2 Orange" $ orange = $ xml.Fruits.Fruit | ? {[int] $ _. Code -eq 2} выдает исключение: «Ошибка: не удается найти перегрузку для« XmlNode »и количество аргументов:« 3 ». Любая идея? – rkellerm

+1

Хм, странно. Возвращает ли '$ xml.Fruits.Fruit' что-нибудь? – stej

+0

Я давно использовал V1, но я помню, что этот «объект как» доступ работал. Были некоторые проблемы, но это не относится к вашему примеру. – stej

Смежные вопросы