Reading XML with PowerShell

Reading XML with PowerShell

We can read XML files using PowerShell. For example, we have the following content in foods.xml file

<foods>
   <food>
       <name>Belgian Waffles</name>
       <price>$5.95</price>
       <description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
       <calories>650</calories>
   </food>


   <food>
     <name>Strawberry Belgian Waffles</name>
     <price>$7.95</price>
     <description>Light Belgian waffles covered with strawberries and whipped cream</description>
     <calories>900</calories>
   </food>


  <food>
     <name>Berry-Berry Belgian Waffles</name>
     <price>$8.95</price>
     <description>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
     <calories>900</calories>
   </food>


  <food>
     <name>French Toast</name>
     <price>$4.50</price>
     <description>Thick slices made from our homemade sourdough bread</description>
     <calories>600</calories>
   </food>


  <food>
     <name>Homestyle Breakfast</name>
     <price>$6.95</price>
     <description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
     <calories>950</calories>
   </food>
</foods>

Read the xml document

PS C:\> [xml]$XmlDocument = Get-Content .\foods.xml
PS C:\> $XmlDocument

foods
-----
foods


PS C:\> $XmlDocument.foods

food
----
{Belgian Waffles, Strawberry Belgian Waffles, Berry-Berry Belgian Waffles, French Toast...}

PS C:\> $XmlDocument.foods.food

name                        price description                                                                         calories
----                        ----- -----------                                                                         --------
Belgian Waffles             $5.95 Two of our famous Belgian Waffles with plenty of real maple syrup                   650
Strawberry Belgian Waffles  $7.95 Light Belgian waffles covered with strawberries and whipped cream                   900
Berry-Berry Belgian Waffles $8.95 Light Belgian waffles covered with an assortment of fresh berries and whipped cream 900
French Toast                $4.50 Thick slices made from our homemade sourdough bread                                 600
Homestyle Breakfast         $6.95 Two eggs, bacon or sausage, toast, and our ever-popular hash browns                 950

PS C:\> $XmlDocument.foods.food.name
Belgian Waffles
Strawberry Belgian Waffles
Berry-Berry Belgian Waffles
French Toast
Homestyle Breakfast

We can also use to directly read the values using Select-Xml cmdlet.

PS C:\> $path = "foods.xml"
PS C:\> $xpath = "/foods/food"
PS C:\> Select-Xml -Path $path -XPath $xpath | Select-Object -ExpandProperty Node

name                        price description                                                                         calories
----                        ----- -----------                                                                         --------
Belgian Waffles             $5.95 Two of our famous Belgian Waffles with plenty of real maple syrup                   650
Strawberry Belgian Waffles  $7.95 Light Belgian waffles covered with strawberries and whipped cream                   900
Berry-Berry Belgian Waffles $8.95 Light Belgian waffles covered with an assortment of fresh berries and whipped cream 900
French Toast                $4.50 Thick slices made from our homemade sourdough bread                                 600
Homestyle Breakfast         $6.95 Two eggs, bacon or sausage, toast, and our ever-popular hash browns                 950

 

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on reddit
Share on skype
Share on telegram
Share on whatsapp
Share on email
Share on print

Leave a Reply

Your email address will not be published. Required fields are marked *

Post comment