1 package com.instantbank.collections.util; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.PrintWriter; 5 import java.io.StringWriter; 6 import oracle.xml.parser.v2.DOMParser; 7 import oracle.xml.parser.v2.XMLDocument; 8 import oracle.xml.parser.v2.XMLNode; 9 import org.w3c.dom.Node; 10 11 public class XMLUtils { 12 public static String xmlHeader() { 13 return "<?xml version = '1.0' encoding = 'ISO-8859-1' standalone = 'yes'?>"; 14 } 15 16 17 public static XMLDocument getXMLDocument(String xml) throws InstantbankException { 18 DOMParser docParser = new DOMParser(); 19 ByteArrayInputStream stream; 20 21 try { 22 stream = new ByteArrayInputStream(xml.getBytes()); 23 docParser.setValidationMode(false); 24 docParser.parse(stream); 25 return docParser.getDocument(); 26 } 27 catch(Exception e) { 28 throw new InstantbankException(e, "000010", "Error processing XML document"); 29 } 30 } 31 32 33 public static String isolateNode(XMLNode doc, String name) throws InstantbankException { 34 XMLNode node; 35 36 try { 37 node = (XMLNode)doc.selectSingleNode(name); 38 StringWriter sw = new StringWriter(); 39 PrintWriter pw = new PrintWriter(sw); 40 node.print(pw); 41 return XMLUtils.xmlHeader() + sw.toString(); 42 } 43 catch(Exception e) { 44 throw new InstantbankException(e, "000010", "Error processing XML document"); 45 } 46 } 47 48 49 public static String removeHeader(String xml) throws InstantbankException { 50 XMLDocument doc; 51 DOMParser docParser = new DOMParser(); 52 Node node; 53 PrintWriter pw; 54 XMLNode root; 55 ByteArrayInputStream stream; 56 StringWriter sw; 57 58 try { 59 stream = new ByteArrayInputStream(xml.getBytes()); 60 docParser.setValidationMode(false); 61 docParser.parse(stream); 62 doc = docParser.getDocument(); 63 root = (XMLNode)doc.getDocumentElement(); 64 sw = new StringWriter(); 65 pw = new PrintWriter(sw); 66 root.print(pw); 67 return sw.toString(); 68 } 69 catch(Exception e) { 70 throw new InstantbankException(e, "000010", "Error processing XML document"); 71 } 72 } 73 74 75 public static String setAnswer(String status, String code, String message, String description) { 76 StringBuffer sb = new StringBuffer(); 77 sb.append(XMLUtils.xmlHeader()); 78 sb.append("<Answer>"); 79 sb.append("<Status>" + status + "</Status>"); 80 sb.append("<Code>" + code + "</Code>"); 81 sb.append("<Message>" + message + "</Message>"); 82 sb.append("<Description>" + description + "</Description>"); 83 sb.append("</Answer>"); 84 return sb.toString(); 85 } 86 } 87 88