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