In this example, demonstrated Java mapping to concatenate first name and last name to full name using DOM. Source XML:
1 2 3 4 5 6 7 8 9 10 11 |
<?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:
1 2 3 4 5 6 7 8 9 |
<?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
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()); } } } |