PowerShell – XML

This is how easy it is to parse an XML file with PowerShell!

[xml]$xml = Get-Content .\data.xml

Example XML:

<?xml version="1.0" encoding="UTF-8"?>
<Entries>
    <Entry Category="Animal">Dog</Entry>
    <Entry Category="Animal">Cat</Entry>
    <Entry Category="Animal">Cow</Entry>
    <Entry Category="City">New York</Entry>
    <Entry Category="City">Paris</Entry>
    <Entry Category="City">London</Entry>
</Entries>

Example using the XML data:

foreach($em in $xml.Entries.Entry) { Write-Host "$($em.InnerText) is a type of $($em.Attributes['Category'].Value)" }
Dog is a type of Animal
Cat is a type of Animal
Cow is a type of Animal
New York is a type of City
Paris is a type of City
London is a type of City

XPath support is also built-in:

$xml.Entries.SelectNodes("//Entry[contains(@Category, 'City')]")
Category #text
-------- -----
City New York
City Paris
City London

To get more information on the return type of a statement use the GetType() method.