1 16 package org.apache.juddi.util.xml; 17 18 import java.io.ByteArrayOutputStream ; 19 import java.io.OutputStream ; 20 import java.net.URL ; 21 import java.util.Vector ; 22 23 import javax.xml.parsers.DocumentBuilder ; 24 import javax.xml.parsers.DocumentBuilderFactory ; 25 import javax.xml.parsers.ParserConfigurationException ; 26 import javax.xml.transform.Result ; 27 import javax.xml.transform.Transformer ; 28 import javax.xml.transform.TransformerFactory ; 29 import javax.xml.transform.dom.DOMSource ; 30 import javax.xml.transform.stream.StreamResult ; 31 32 import org.apache.juddi.util.Loader; 33 import org.w3c.dom.Document ; 34 import org.w3c.dom.Element ; 35 import org.w3c.dom.Node ; 36 import org.w3c.dom.NodeList ; 37 import org.xml.sax.SAXException ; 38 import org.xml.sax.SAXParseException ; 39 import org.xml.sax.helpers.DefaultHandler ; 40 41 44 public class XMLUtils 45 { 46 private static DocumentBuilder docBuilder = null; 48 49 54 public static String getText(Element element) 55 { 56 StringBuffer textBuffer = new StringBuffer (); 57 58 NodeList nodeList = element.getChildNodes(); 59 for (int i=0; i<nodeList.getLength(); i++) 60 { 61 if (nodeList.item(i).getNodeType() == Element.TEXT_NODE) 62 textBuffer.append(nodeList.item(i).getNodeValue()); 63 } 64 65 return textBuffer.toString().trim(); 66 } 67 68 74 public static Vector getChildElementsByTagName(Element element,String tagName) 75 { 76 Vector result = new Vector (); 77 78 NodeList children = element.getChildNodes(); 79 for (int i=0; i<children.getLength(); i++) 80 { 81 84 Node node = children.item(i); 85 String nodeName = node.getNodeName(); 86 String localName = node.getLocalName(); 87 88 if ((localName == null) && (nodeName != null)) 89 localName = nodeName; 90 91 if (node.getNodeType() == Node.ELEMENT_NODE && localName.equals(tagName)) 92 result.addElement(node); } 94 95 return result; 96 } 97 98 102 public static Element newRootElement() 103 { 104 Element element = null; 105 106 try 107 { 108 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 109 DocumentBuilder builder = factory.newDocumentBuilder(); 110 Document document = builder.newDocument(); 111 Element holder = document.createElement("root"); 112 document.appendChild(holder); 113 element = document.getDocumentElement(); 114 } 115 catch(Exception ex) { ex.printStackTrace(); } 116 117 return element; 118 } 119 120 public static Document createDocument() 121 { 122 if (docBuilder == null) 123 docBuilder = createDocumentBuilder(); 124 125 return docBuilder.newDocument(); 126 } 127 128 private static DocumentBuilder createDocumentBuilder() 129 { 130 if (docBuilder != null) 131 return docBuilder; 132 133 try { 134 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 135 docBuilder = factory.newDocumentBuilder(); 136 } 137 catch(ParserConfigurationException pcex) { 138 pcex.printStackTrace(); 139 } 140 141 return docBuilder; 142 } 143 144 public static void writeXML(Element element,OutputStream stream) 145 { 146 try { 147 TransformerFactory xformerFactory = TransformerFactory.newInstance(); 148 Transformer xformer = xformerFactory.newTransformer(); 149 Result output = new StreamResult (stream); 150 DOMSource source = new DOMSource (element); 151 152 xformer.transform(source,output); 154 } 155 catch(Exception ex) { 156 ex.printStackTrace(); 157 } 158 } 159 160 public static String toString(Element element) 161 { 162 ByteArrayOutputStream stream = new ByteArrayOutputStream (); 163 writeXML(element,stream); 164 165 return stream.toString(); 166 } 167 168 public static void validate(URL xmlDocUrl) 169 { 170 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 171 factory.setValidating(true); 172 factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage","http://www.w3.org/2001/XMLSchema"); 173 factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource",Loader.getResource("uddi_v2.xsd")); 174 175 try 176 { 177 DocumentBuilder builder = factory.newDocumentBuilder(); 178 Validator handler = new Validator(); 179 builder.setErrorHandler(handler); 180 182 if ((handler.error) || (handler.warning)) 183 System.out.println(handler.toString()); 184 } 185 catch(ParserConfigurationException pcex) { 186 pcex.printStackTrace(); 187 } 188 } 189 } 190 191 class Validator extends DefaultHandler 192 { 193 public boolean warning = false; 194 public boolean error = false; 195 public SAXParseException exception = null; 196 197 public void warning(SAXParseException spex) 198 throws SAXException 199 { 200 warning = true; 201 exception = spex; 202 } 203 204 public void error(SAXParseException spex) 205 throws SAXException 206 { 207 error = true; 208 exception = spex; 209 } 210 211 public void fatalError(SAXParseException spex) 212 throws SAXException 213 { 214 error = true; 215 exception = spex; 216 } 217 218 public String toString() 219 { 220 StringBuffer buffer = new StringBuffer (); 221 222 if (exception != null) 223 { 224 buffer.append("Public ID: " + exception.getPublicId()); 225 buffer.append("\n"); 226 buffer.append("System ID: " + exception.getSystemId()); 227 buffer.append("\n"); 228 buffer.append("Line number: " + exception.getLineNumber()); 229 buffer.append("\n"); 230 buffer.append("Column number: " + exception.getColumnNumber()); 231 buffer.append("\n"); 232 buffer.append("Message: " + exception.getMessage()); 233 } 234 235 return buffer.toString(); 236 } 237 } | Popular Tags |