1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 171c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilsonpackage libcore.xml; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Attributes; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ContentHandler; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Locator; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStreamReader; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParser; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParserFactory; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 371c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilsonpublic class SimpleParserTest extends TestCase { 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private SAXParser parser; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private StringBuffer instructions; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Map<String, String> namespaces1; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Map<String, String> namespaces2; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private StringBuffer elements1; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private StringBuffer elements2; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Map<String, String> attributes1; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Map<String, String> attributes2; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private StringBuffer text; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParserFactory factory = SAXParserFactory.newInstance(); 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setValidating(false); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setNamespaceAware(true); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser = factory.newSAXParser(); 611c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson parser.getXMLReader().setContentHandler(contentHandler); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project instructions = new StringBuffer(); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project namespaces1 = new HashMap<String, String>(); 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project namespaces2 = new HashMap<String, String>(); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elements1 = new StringBuffer(); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elements2 = new StringBuffer(); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project attributes1 = new HashMap<String, String>(); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project attributes2 = new HashMap<String, String>(); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project text = new StringBuffer(); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project instructions = null; 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser = null; 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project namespaces1 = null; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project namespaces2 = null; 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project attributes1 = null; 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project attributes2 = null; 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elements1 = null; 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elements2 = null; 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project text = null; 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 861c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson private final ContentHandler contentHandler = new ContentHandler() { 871c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void characters(char[] ch, int start, int length) { 881c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson String s = new String(ch, start, length).trim(); 891c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (!s.isEmpty()) { 901c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (text.length() != 0) { 911c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson text.append(","); 921c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 931c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson text.append(s); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 971c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void processingInstruction(String target, String data) { 981c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson String s = target + ":" + data; 991c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (instructions.length() != 0) { 1001c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson instructions.append(","); 1011c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 1021c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson instructions.append(s); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1061c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void startElement(String uri, String localName, String qName, Attributes atts) { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1081c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (elements1.length() != 0) { 1091c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson elements1.append(","); 1101c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1121c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson elements1.append(localName); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1141c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (!"".equals(uri)) { 1151c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson namespaces1.put(localName, uri); 1161c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1181c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson for (int i = 0; i < atts.getLength(); i++) { 1191c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson attributes1.put(atts.getLocalName(i), atts.getValue(i)); 1201c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1221c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (elements2.length() != 0) { 1231c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson elements2.append(","); 1241c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1261c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson elements2.append(qName); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1281c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson if (!"".equals(uri)) { 1291c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson namespaces2.put(qName, uri); 1301c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1321c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson for (int i = 0; i < atts.getLength(); i++) { 1331c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson attributes2.put(atts.getQName(i), atts.getValue(i)); 1341c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson } 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1371c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void endDocument() {} 1381c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void endElement(String uri, String localName, String qName) {} 1391c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void endPrefixMapping(String prefix) {} 1401c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void ignorableWhitespace(char[] ch, int start, int length) {} 1411c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void setDocumentLocator(Locator locator) {} 1421c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void skippedEntity(String name) {} 1431c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void startDocument() {} 1441c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson public void startPrefixMapping(String prefix, String uri) {} 1451c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson }; 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testWorkingFile1() throws Exception { 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParserFactory factory = SAXParserFactory.newInstance(); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setValidating(false); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setNamespaceAware(true); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParser parser = factory.newSAXParser(); 1531c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson parser.getXMLReader().setContentHandler(contentHandler); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser.parse(getClass().getResourceAsStream("/SimpleParserTest.xml"), 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (DefaultHandler) null); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The:quick,brown:fox", instructions.toString()); 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("stuff,nestedStuff,nestedStuff,nestedStuff", elements1 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .toString()); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Some text here,some more here...", text.toString()); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("eins", attributes1.get("one")); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("zwei", attributes1.get("two")); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("drei", attributes1.get("three")); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("http://www.foobar.org", namespaces1.get("stuff")); 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testWorkingFile2() throws Exception { 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParserFactory factory = SAXParserFactory.newInstance(); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setValidating(false); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setNamespaceAware(false); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project factory.setFeature("http://xml.org/sax/features/namespace-prefixes", 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project true); 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParser parser = factory.newSAXParser(); 1801c92541d38ed4d0b6e958f478cd7b129f140cd44Jesse Wilson parser.getXMLReader().setContentHandler(contentHandler); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser.parse(getClass().getResourceAsStream("/SimpleParserTest.xml"), 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (DefaultHandler) null); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(parser.isNamespaceAware()); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The:quick,brown:fox", instructions.toString()); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("t:stuff,nestedStuff,nestedStuff,nestedStuff", elements2 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .toString()); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Some text here,some more here...", text.toString()); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("eins", attributes2.get("one")); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("zwei", attributes2.get("two")); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("drei", attributes2.get("three")); 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0, namespaces2.size()); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testEntityResolver() throws Exception { 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final StringBuilder text = new StringBuilder(); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DefaultHandler handler = new DefaultHandler() { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void characters(char[] ch, int start, int length) { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s = new String(ch, start, length).trim(); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s.length() != 0) { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (text.length() != 0) { 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project text.append(","); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project text.append(s); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource resolveEntity(String publicId, String systemId) 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws IOException, SAXException { 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new InputSource(new InputStreamReader( 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new ByteArrayInputStream("test".getBytes()))); 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SAXParserFactory spf = SAXParserFactory.newInstance(); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project spf.setValidating(false); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser = spf.newSAXParser(); 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parser.parse(this.getClass().getResourceAsStream("/staffEntRes.xml"), 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project handler); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "resolved external entity must be in parser character stream", 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project text.toString().contains("test")); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetValue() throws Exception{ 229f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes parser.parse(getClass().getResourceAsStream("/staffNS.xml"), 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new DefaultHandler() { 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean firstAddressElem = true; 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void startElement (String uri, String localName, 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String qName, Attributes attributes) { 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if(firstAddressElem && localName.equals("address")) { 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project firstAddressElem = false; 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(attributes.getValue("http://www.usa.com", 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "domestic")); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 244