global class MCTriggerSendResponseParser {
    global string Parse(Dom.Document doc) {
        Dom.XMLNode rootElement = doc.getRootElement();

        String outerData = '{"TriggerSends":[';
        for (Dom.XMLNode body : rootElement.getChildElements()) {
            if (body.getName() == 'Body') {
                for (Dom.XMLNode retrieveElements : body.getChildElements()) {
                    if (retrieveElements.getName() == 'RetrieveResponseMsg') {
                        for (Dom.XMLNode resultsElements : retrieveElements.getChildElements()) {
                            if (resultsElements.getName() == 'Results') {
                                for (Dom.XMLNode resultElement : resultsElements.getChildElements()) {
                                    String data = '';
                                    if (resultElement.getName() == 'Client') {
                                        for (Dom.XMLNode clientElement : resultElement.getChildElements()) {
                                            data = data + '{"MID":"' + clientElement.getText() + '",';
                                        }
                                    }

                                    if (resultElement.getName() == 'CustomerKey') {
                                        data = data + '"TriggerSendDefinitionKey":"' + resultElement.getText() + '",';
                                    }
                                    if (resultElement.getName() == 'Name') {
                                        data = data + '"TriggerSendDefinitionName":"' + resultElement.getText() + '"}';
                                    }
                                    outerData = outerData + data;
                                }

                                outerData = outerData + ',';
                            }
                        }
                        outerData = outerData.substring(0, outerData.length() - 1);
                    }
                }
            }
        }
        outerData = outerData + ']}';
        return outerData;
    }
}
