2016年3月30日星期三

Transform xml to another xml, adding node, renaming node

import java.util.List;
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);

没有评论:

发表评论