How to parse XML string in Salesforce using Apex?

How to parse XML string in Salesforce using Apex?

Dom.XMLNode can be usedto parse XML string in Salesforce using Apex.

Sample XML:

<?xml version="1.0" encoding="UTF-8"?>  
<breakfast_menu>  
  <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>  
</breakfast_menu>  

Sample Apex Code to Parse:

String strResp = '<?xml version="1.0" encoding="UTF-8"?><breakfast_menu>  <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></breakfast_menu>';  
Dom.Document doc = new Dom.Document();  
doc.load( strResp );  
Dom.XMLNode rootElement = doc.getRootElement();  
for ( Dom.XMLNode childElement : rootElement.getChildElements() ) {  
     
    for ( Dom.XMLNode detailElement : childElement.getChildElements() ) 
        system.debug( detailElement.getName() + '-' + detailElement.getText() ); 
     
}  

Output:

Leave a Reply