In this example, demonstrated Java mapping to concatenate first name and last name to full name using DOM.
Source XML:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_FIRSTNAME_LASTNAME xmlns:ns0="http://test.com/common">
<row>
<FirstName>Yun Fat</FirstName>
<LastName>Chow</LastName>
</row>
<row>
<FirstName>Michael</FirstName>
<LastName>Jackson</LastName>
</row>
</ns0:MT_FIRSTNAME_LASTNAME>
Target XML:
<?xml version="1.0" encoding="UTF-8"?>
<MT_FULLNAME>
<row>
<FullName>Yun Fat Chow</FullName>
</row>
<row>
<FullName>Michael Jackson</FullName>
</row>
</MT_FULLNAME>
JAVA mapping class:
package com.map;
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import com.sap.aii.mapping.api.*;
public class Test_JavaMapping_FirstNameLastName2FullName_DOM extends AbstractTransformation {
public void transform(TransformationInput transformationInput, TransformationOutput transformationOutput) throws StreamTransformationException {
try {
InputStream inputstream = transformationInput.getInputPayload().getInputStream();
OutputStream outputstream = transformationOutput.getOutputPayload().getOutputStream();
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document inDoc = docBuilder.parse(inputstream);
Document outDoc = docBuilder.newDocument();
Element oMT = outDoc.createElement("MT_FULLNAME");
outDoc.appendChild(oMT);
NodeList nodes = inDoc.getElementsByTagName("row");
for (int i = 0; i < nodes.getLength(); i++){
Element oRow = outDoc.createElement("row");
oMT.appendChild(oRow);
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE){
Element element = (Element)node;
String sFirstName = element.getElementsByTagName("FirstName").item(0).getTextContent();
String sLastName = element.getElementsByTagName("LastName").item(0).getTextContent();
String sFullName = sFirstName + " " + sLastName;
Element oFullName = outDoc.createElement("FullName");
oFullName.appendChild(outDoc.createTextNode(sFullName));
oRow.appendChild(oFullName);
}
}
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(outDoc), new StreamResult(outputstream));
} catch (Exception exception) {
throw new StreamTransformationException(exception.toString());
}
}
}
JAVA Mapping Simple FirstName LastName to FullName using DOM