Skip to content

Instantly share code, notes, and snippets.

@havana59er
Created September 17, 2012 20:29
Show Gist options
  • Save havana59er/3739589 to your computer and use it in GitHub Desktop.
Save havana59er/3739589 to your computer and use it in GitHub Desktop.
Mule - SFDC Transformer - Convert SalesForce query result to dom4j XML Document
package org.asm.mule;
import java.util.List;
import java.util.Map;
import org.dom4j.Branch;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.mule.api.transformer.TransformerException;
import org.mule.transformer.AbstractTransformer;
public class SfToDomTransformer extends AbstractTransformer {
@Override
protected Object doTransform(Object src, String enc) throws TransformerException {
Document sfXmlDoc = null;
if (src instanceof List) {
List<Map<String, String>> sfObjects = (List<Map<String, String>>)src;
sfXmlDoc = DocumentHelper.createDocument();
Element root = sfXmlDoc.addElement("Records");
for (Map<String, String> sfObject : sfObjects) {
root = (Element)parseSfObject(sfObject, root);
}
sfXmlDoc.setRootElement(root);
} else if (src instanceof Map) {
Map<String, String> sfObject = (Map<String, String>)src;
sfXmlDoc = (Document)parseSfObject(sfObject, DocumentHelper.createDocument());
}
return sfXmlDoc;
}
private Branch parseSfObject(Map<String, String> sfObject, Branch root) {
Element node = null;
if (sfObject.containsKey("type")) {
node = root.addElement(sfObject.get("type"));
}
else {
node = root.addElement("SObject");
}
for (String field : sfObject.keySet()) {
node.addElement(field).addText(sfObject.get(field));
}
return root;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment