3

I have an XML document with this structure:

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

What is the best way to get a <Fruit> element by its code (or any other field) in PowerShell 1 code? (Not XPath, as it is supported in PowerShell 2 only)

Thanks!

2 Answers 2

5

You can access the nodes like objects from 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 }
Sign up to request clarification or add additional context in comments.

3 Comments

First - thank you. When trying to run your script: $xml = [xml]" 1 Apple 2 Orange " $orange = $xml.Fruits.Fruit | ? { [int]$_.Code -eq 2 } it throws an exception: "Error: Cannot find an overload for "XmlNode" and the argument count: "3"." Any idea?
Hm, weird. Does $xml.Fruits.Fruit return anything?
It's a long time ago I used V1, but I remember that this 'object like' accessing worked. There were some issues, but that won't apply to your example.
4

You can use XPath in V1 like this, if you prefer:

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.