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:\Users\Administrator\Desktop> [xml]$XmlDocument = Get-Content .\foods.xml
    PS C:\Users\Administrator\Desktop> $XmlDocument
     
    foods
    -----
    foods
     
    PS C:\Users\Administrator\Desktop> $XmlDocument.foods
     
    food
    ----
    {Belgian Waffles, Strawberry Belgian Waffles, Berry-Berry Belgian Waffles, French Toast...}
     
    PS C:\Users\Administrator\Desktop> $XmlDocument.foods.food
     
    name                          price                         description                   calories
    ----                          -----                         -----------                   --------
    Belgian Waffles               $5.95                         Two of our famous Belgian ... 650
    Strawberry Belgian Waffles    $7.95                         Light Belgian waffles cove... 900
    Berry-Berry Belgian Waffles   $8.95                         Light Belgian waffles cove... 900
    French Toast                  $4.50                         Thick slices made from our... 600
    Homestyle Breakfast           $6.95                         Two eggs, bacon or sausage... 950
     
    PS C:\Users\Administrator\Desktop> $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:\Users\Administrator\Desktop> $path = "foods.xml"
    PS C:\Users\Administrator\Desktop> $xpath = "/foods/food"
    PS C:\Users\Administrator\Desktop> Select-Xml -Path $path -XPath $xpath | Select-Object -ExpandProperty Node
     
    name                          price                         description                   calories
    ----                          -----                         -----------                   --------
    Belgian Waffles               $5.95                         Two of our famous Belgian ... 650
    Strawberry Belgian Waffles    $7.95                         Light Belgian waffles cove... 900
    Berry-Berry Belgian Waffles   $8.95                         Light Belgian waffles cove... 900
    French Toast                  $4.50                         Thick slices made from our... 600
    Homestyle Breakfast           $6.95                         Two eggs, bacon or sausage... 950

     


    © 2020 WinAdmin.org, All Rights Reserved.

    We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.