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