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);

Format timestamp

import java.util.Date;
import java.util.Calendar;
import javax.xml.bind.DatatypeConverter;
import java.text.SimpleDateFormat;

Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.set(Calendar.MILLISECOND, 0);


String myFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";

SimpleDateFormat dateFormater = new SimpleDateFormat(myFormat);
String jobStartedTime = dateFormater.format(now);

System.out.println(jobStartedTime);



https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Date and Time PatternResult
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"Wed, Jul 4, '01
"h:mm a"12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u"2001-W27-3