import org.w3c.dom.Node;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
// Feng Zhang, 3/15/2016
// Obtain the root element
org.w3c.dom.Document document = exchange.getIn().getBody(org.w3c.dom.Document.class);
Element element = document.getDocumentElement();
String namespacePrefix = element.lookupPrefix("http://transfermedia.fims.tv");
document.renameNode(element, "http://transfermedia.fims.tv", namespacePrefix + ":" + "TransferAck");
//add node status and description
//Create the new node to insert
//Create node for status, statusDescription,serviceProviderJobID
Text statusTextNode = document.createTextNode("new");
Element statusNode = document.createElementNS("http://base.fims.tv", "base:status");
statusNode.appendChild(statusTextNode);
Text statusDsTestNode = document.createTextNode("Request Accepted");
Element statusDsNode = document.createElementNS("http://base.fims.tv", "base:statusDescription");
statusDsNode.appendChild(statusDsTestNode);
Text servicePIDTextNode = document.createTextNode("E2E388A0-0C46-4BDE-B336-5A4F0D4E2434");
Element servicePIDNode = document.createElementNS("http://base.fims.tv", "base:serviceProviderJobID");
servicePIDNode.appendChild(servicePIDTextNode);
//get Root Node
Element transferAckNode = document.getDocumentElement();
System.out.println("transferAckNode is" + transferAckNode);
//get transferJob Node
Node transferJobNode = transferAckNode.getChildNodes().item(1);
System.out.println("transferJobNode is" + transferJobNode);
//get node to insert before
Node bmObjectsNode = transferJobNode.getChildNodes().item(4);
System.out.println("bmObjectsNode is" + bmObjectsNode);
//insert all three nodes
transferJobNode.insertBefore(statusNode, bmObjectsNode);
transferJobNode.insertBefore(statusDsNode, bmObjectsNode);
transferJobNode.insertBefore(servicePIDNode, bmObjectsNode);
//Element locatorInfoNode = document.getElementsByTagNameNS("http://base.fims.tv", "base:locatorInfo");
//locatorInfoNode.setText(exchange.getProperty("LocatorInfo"));
exchange.setProperty("Request", document);