function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
AbAb 

Recursively reading a HTTP response.

Hello,

How to read a HTTPResponse (XML responce). and convert it in to a map.

 
Best Answer chosen by Ab
Amit K AAmit K A
public with sharing class XMLParser {
    public static List<List<Map<String,String>>> parse() {
        String xml = '<Company><Department><Employee><Name>A1</Name><EmpId>001</EmpId><city>Hyd</city></Employee><Employee><Name>A2</Name><EmpId>002</EmpId><city>Banglore</city></Employee><Employee><Name>A3</Name><EmpId>003</EmpId><city>Chennai</city></Employee></Department></Company>';
        Dom.Document doc = new Dom.Document();
        doc.load(xml);
        List<List<Map<String,String>>> departments = new List<List<Map<String,String>>>();
        for(Dom.XmlNode dept:doc.getRootElement().getChildElements()) {
            List<Map<String,String>> employees = new List<Map<String,String>>();
            for(Dom.XmlNode emp:dept.getChildElements()) {
                Map<String,String> employee = new Map<String,String>();
                for(Dom.XmlNode empProp:emp.getChildElements()) {
                    employee.put(empProp.getName(),empProp.getText());
                }
                employees.add(employee);
            }
            departments.add(employees);
        }
        return departments;
    }
}

All Answers

NagaNaga (Salesforce Developers) 
Hi Sandrine,

Please try the below code and let me know if this helps

User-added imageBest Regards
Naga Kiran
Amit K AAmit K A
public with sharing class XMLParser {
    public static List<List<Map<String,String>>> parse() {
        String xml = '<Company><Department><Employee><Name>A1</Name><EmpId>001</EmpId><city>Hyd</city></Employee><Employee><Name>A2</Name><EmpId>002</EmpId><city>Banglore</city></Employee><Employee><Name>A3</Name><EmpId>003</EmpId><city>Chennai</city></Employee></Department></Company>';
        Dom.Document doc = new Dom.Document();
        doc.load(xml);
        List<List<Map<String,String>>> departments = new List<List<Map<String,String>>>();
        for(Dom.XmlNode dept:doc.getRootElement().getChildElements()) {
            List<Map<String,String>> employees = new List<Map<String,String>>();
            for(Dom.XmlNode emp:dept.getChildElements()) {
                Map<String,String> employee = new Map<String,String>();
                for(Dom.XmlNode empProp:emp.getChildElements()) {
                    employee.put(empProp.getName(),empProp.getText());
                }
                employees.add(employee);
            }
            departments.add(employees);
        }
        return departments;
    }
}
This was selected as the best answer