XercesHTMLDocumentBuilderFactory.java revision adc854b798c1cfe3bfd4c27d68d5cee38ca617da
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (c) 2002 World Wide Web Consortium, 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (Massachusetts Institute of Technology, Institut National de 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Recherche en Informatique et en Automatique, Keio University). All 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Rights Reserved. This program is distributed under the W3C's Software 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Intellectual Property License. This program is distributed in the 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PURPOSE. 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See W3C License http://www.w3.org/Consortium/Legal/ for more details. 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.w3c.domts; 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Constructor; 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.InvocationTargetException; 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Method; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.ParserConfigurationException; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParser; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParserFactory; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.DOMImplementation; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Document; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.AttributeList; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Attributes; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.DocumentHandler; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This class implements the generic parser and configuation 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * abstract class the HTML DOM implementation in Xerces-J 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class XercesHTMLDocumentBuilderFactory 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project extends DOMTestDocumentBuilderFactory { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private SAXParserFactory factory; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Constructor htmlBuilderConstructor; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Method getHTMLDocumentMethod; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private DOMImplementation domImpl; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final Class[] NO_CLASSES = new Class[0]; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final Object[] NO_OBJECTS = new Object[0]; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Creates a implementation of DOMTestDocumentBuilderFactory 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * using org.apache.html.dom.HTMLBuilder 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param settings array of settings, may be null. 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public XercesHTMLDocumentBuilderFactory(DocumentBuilderSetting[] settings) throws 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DOMTestIncompatibleException { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(settings); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ClassLoader classLoader = ClassLoader.getSystemClassLoader(); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class htmlBuilderClass = 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project classLoader.loadClass("org.apache.html.dom.HTMLBuilder"); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilderConstructor = 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilderClass.getConstructor(NO_CLASSES); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project getHTMLDocumentMethod = 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilderClass.getMethod("getHTMLDocument", NO_CLASSES); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class htmlDOMImpl = 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project classLoader.loadClass( 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "org.apache.html.dom.HTMLDOMImplementationImpl"); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Method method = 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlDOMImpl.getMethod("getHTMLDOMImplementation", NO_CLASSES); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project domImpl = (DOMImplementation) method.invoke(null, NO_OBJECTS); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class saxFactoryClass = 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project classLoader.loadClass( 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "org.apache.xerces.jaxp.SAXParserFactoryImpl"); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory = (SAXParserFactory) saxFactoryClass.newInstance(); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project catch (InvocationTargetException ex) { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new DOMTestIncompatibleException( 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ex.getTargetException(), 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project catch (Exception ex) { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new DOMTestIncompatibleException(ex, null); 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // apply settings to selected document builder 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // may throw exception if incompatible 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (settings != null) { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < settings.length; i++) { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // settings[i].applySetting(factory); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.newSAXParser(); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project catch (ParserConfigurationException ex) { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new DOMTestIncompatibleException(ex, null); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project catch (SAXException ex) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new DOMTestIncompatibleException(ex, null); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public DOMTestDocumentBuilderFactory newInstance(DocumentBuilderSetting[] 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project newSettings) throws DOMTestIncompatibleException { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (newSettings == null) { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this; 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting[] mergedSettings = mergeSettings(newSettings); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new XercesHTMLDocumentBuilderFactory(mergedSettings); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private class HTMLHandler 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project extends DefaultHandler 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project implements AttributeList { 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final DocumentHandler htmlBuilder; 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final Method getHTMLDocumentMethod; 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Attributes currentAttributes; 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public HTMLHandler( 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor htmlBuilderConstructor, 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Method getHTMLDocumentMethod) throws Exception { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder = 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (DocumentHandler) htmlBuilderConstructor.newInstance( 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Object[0]); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.getHTMLDocumentMethod = getHTMLDocumentMethod; 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void startDocument() throws SAXException { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.startDocument(); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void endDocument() throws SAXException { 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.endDocument(); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void startElement( 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String uri, 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String localName, 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String qName, 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Attributes attributes) throws SAXException { 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project currentAttributes = attributes; 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.startElement(qName, this); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void endElement(String uri, String localName, String qName) throws 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXException { 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.endElement(qName); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void characters(char ch[], int start, int length) throws 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXException { 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.characters(ch, start, length); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void ignorableWhitespace(char ch[], int start, int length) throws 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXException { 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.ignorableWhitespace(ch, start, length); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void processingInstruction(String target, String data) throws 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXException { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder.processingInstruction(target, data); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Document getHTMLDocument() throws Exception { 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (Document) getHTMLDocumentMethod.invoke( 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htmlBuilder, 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NO_OBJECTS); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getLength() { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return currentAttributes.getLength(); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getName(int i) { 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return currentAttributes.getQName(i); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getType(int i) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return currentAttributes.getType(i); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getValue(int i) { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return currentAttributes.getValue(i); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getType(String name) { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return currentAttributes.getType(name); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getValue(String name) { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return currentAttributes.getValue(name); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Document load(java.net.URL url) throws DOMTestLoadException { 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Document doc = null; 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParser parser = factory.newSAXParser(); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HTMLHandler handler = 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new HTMLHandler(htmlBuilderConstructor, getHTMLDocumentMethod); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser.parse(url.toString(), handler); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project doc = handler.getHTMLDocument(); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project catch (Exception ex) { 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new DOMTestLoadException(ex); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return doc; 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public DOMImplementation getDOMImplementation() { 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return domImpl; 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean hasFeature(String feature, String version) { 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return domImpl.hasFeature(feature, version); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isCoalescing() { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isExpandEntityReferences() { 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isIgnoringElementContentWhitespace() { 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isNamespaceAware() { 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return factory.isNamespaceAware(); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isValidating() { 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return factory.isValidating(); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static DocumentBuilderSetting[] getConfiguration1() { 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new DocumentBuilderSetting[] { 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.notCoalescing, 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.notExpandEntityReferences, 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.notIgnoringElementContentWhitespace, 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.notNamespaceAware, 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.notValidating}; 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static DocumentBuilderSetting[] getConfiguration2() { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new DocumentBuilderSetting[] { 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.notCoalescing, 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.expandEntityReferences, 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.ignoringElementContentWhitespace, 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.namespaceAware, 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DocumentBuilderSetting.validating}; 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 262