Java tutorial
//package com.java2s; /* * Helma License Notice * * The contents of this file are subject to the Helma License * Version 2.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://adele.helma.org/download/helma/license.txt * * Copyright 1998-2003 Helma Software. All Rights Reserved. * * $RCSfile$ * $Author$ * $Revision$ * $Date$ */ import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.io.InputStream; import java.util.WeakHashMap; public class Main { private static final DocumentBuilderFactory domBuilderFactory = javax.xml.parsers.DocumentBuilderFactory .newInstance(); private static final WeakHashMap domBuilders = new WeakHashMap(); /** * * * @param in ... * * @return ... * * @throws RuntimeException ... */ public static Document parse(InputStream in) throws RuntimeException { DocumentBuilder d = getDocumentBuilder(); try { Document doc = d.parse(in); doc.normalize(); return doc; } catch (SAXException e) { throw new RuntimeException("Bad xml-code: " + e.toString()); } catch (IOException f) { throw new RuntimeException("Could not read Xml: " + f.toString()); } } /** * * * @param in ... * * @return ... * * @throws RuntimeException ... */ public static Document parse(InputSource in) throws RuntimeException { DocumentBuilder d = getDocumentBuilder(); try { Document doc = d.parse(in); doc.normalize(); return doc; } catch (SAXException e) { throw new RuntimeException("Bad xml-code: " + e.toString()); } catch (IOException f) { throw new RuntimeException("Could not read Xml: " + f.toString()); } } private static synchronized DocumentBuilder getDocumentBuilder() { DocumentBuilder domBuilder = (DocumentBuilder) domBuilders.get(Thread.currentThread()); if (domBuilder != null) { return domBuilder; } else { try { domBuilder = domBuilderFactory.newDocumentBuilder(); domBuilders.put(Thread.currentThread(), domBuilder); return domBuilder; } catch (ParserConfigurationException e) { throw new RuntimeException("Cannot build parser: " + e.toString()); } } } }