1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// SAX input source. 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// http://www.saxproject.org 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// No warranty; no copyright -- use this as you will. 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// $Id: InputSource.java,v 1.9 2002/01/30 21:13:45 dbrownell Exp $ 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.xml.sax; 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream; 97365de1056414750d0a7d1fdd26025fd247f0d04Jesse Wilsonimport java.io.Reader; 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A single input source for an XML entity. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <blockquote> 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>This module, both source code and documentation, is in the 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em> 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a> 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for further information. 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </blockquote> 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>This class allows a SAX application to encapsulate information 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * about an input source in a single object, which may include 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a public identifier, a system identifier, a byte stream (possibly 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * with a specified encoding), and/or a character stream.</p> 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>There are two places that the application can deliver an 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * input source to the parser: as the argument to the Parser.parse 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method, or as the return value of the EntityResolver.resolveEntity 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method.</p> 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The SAX parser will use the InputSource object to determine how 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to read XML input. If there is a character stream available, the 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parser will read that stream directly, disregarding any text 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding declaration found in that stream. 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If there is no character stream, but there is 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a byte stream, the parser will use that byte stream, using the 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding specified in the InputSource or else (if no encoding is 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified) autodetecting the character encoding using an algorithm 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * such as the one in the XML specification. If neither a character 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * stream nor a 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * byte stream is available, the parser will attempt to open a URI 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * connection to the resource identified by the system 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * identifier.</p> 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>An InputSource object belongs to the application: the SAX parser 46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * shall never modify it in any way (it may modify a copy if 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * necessary). However, standard processing of both byte and 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character streams is to close them on as part of end-of-parse cleanup, 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * so applications should not attempt to re-use such streams after they 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * have been handed to a parser. </p> 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since SAX 1.0 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author David Megginson 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version 2.0.1 (sax2r2) 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource) 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.EntityResolver#resolveEntity 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.io.InputStream 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.io.Reader 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class InputSource { 61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Zero-argument default constructor. 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setPublicId 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setSystemId 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setCharacterStream 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setEncoding 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource () 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 75f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Create a new input source with a system identifier. 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * <p>Applications may use setPublicId to include a 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public identifier as well, or setEncoding to specify 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the character encoding, if known.</p> 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>If the system identifier is a URL, it must be fully 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * resolved (it may not be a relative URL).</p> 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param systemId The system identifier (URI). 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setPublicId 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setSystemId 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setEncoding 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setCharacterStream 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource (String systemId) 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSystemId(systemId); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 98f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Create a new input source with a byte stream. 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 102f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * <p>Application writers should use setSystemId() to provide a base 103f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * for resolving relative URIs, may use setPublicId to include a 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public identifier, and may use setEncoding to specify the object's 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character encoding.</p> 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param byteStream The raw byte stream containing the document. 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setPublicId 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setSystemId 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setEncoding 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setCharacterStream 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource (InputStream byteStream) 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setByteStream(byteStream); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 118f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 119f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Create a new input source with a character stream. 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 123f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * <p>Application writers should use setSystemId() to provide a base 124f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * for resolving relative URIs, and may use setPublicId to include a 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public identifier.</p> 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The character stream shall not include a byte order mark.</p> 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param characterStream The raw character stream containing the document. 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setPublicId 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setSystemId 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setCharacterStream 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource (Reader characterStream) 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setCharacterStream(characterStream); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 140f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Set the public identifier for this input source. 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The public identifier is always optional: if the application 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * writer includes one, it will be provided as part of the 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * location information.</p> 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param publicId The public identifier as a string. 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getPublicId 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.Locator#getPublicId 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.SAXParseException#getPublicId 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPublicId (String publicId) 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.publicId = publicId; 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 157f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 158f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Get the public identifier for this input source. 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return The public identifier, or null if none was supplied. 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setPublicId 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getPublicId () 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return publicId; 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 170f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Set the system identifier for this input source. 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The system identifier is optional if there is a byte stream 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * or a character stream, but it is still useful to provide one, 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * since the application can use it to resolve relative URIs 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and can include it in error messages and warnings (the parser 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * will attempt to open a connection to the URI only if 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * there is no byte stream or character stream specified).</p> 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>If the application knows the character encoding of the 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * object pointed to by the system identifier, it can register 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the encoding using the setEncoding method.</p> 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>If the system identifier is a URL, it must be fully 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * resolved (it may not be a relative URL).</p> 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param systemId The system identifier as a string. 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setEncoding 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getSystemId 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.Locator#getSystemId 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.SAXParseException#getSystemId 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSystemId (String systemId) 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.systemId = systemId; 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Get the system identifier for this input source. 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The getEncoding method will return the character encoding 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of the object pointed to, or null if unknown.</p> 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>If the system ID is a URL, it will be fully resolved.</p> 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return The system identifier, or null if none was supplied. 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setSystemId 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getEncoding 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getSystemId () 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return systemId; 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 216f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Set the byte stream for this input source. 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The SAX parser will ignore this if there is also a character 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * stream specified, but it will use a byte stream in preference 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to opening a URI connection itself.</p> 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>If the application knows the character encoding of the 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * byte stream, it should set it with the setEncoding method.</p> 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param byteStream A byte stream containing an XML document or 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * other entity. 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setEncoding 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getByteStream 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getEncoding 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.io.InputStream 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setByteStream (InputStream byteStream) 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.byteStream = byteStream; 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 239f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 240f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Get the byte stream for this input source. 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The getEncoding method will return the character 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding for this byte stream, or null if unknown.</p> 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return The byte stream, or null if none was supplied. 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getEncoding 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputStream getByteStream () 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return byteStream; 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 257f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes /** 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Set the character encoding, if known. 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The encoding must be a string acceptable for an 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * XML encoding declaration (see section 4.3.3 of the XML 1.0 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * recommendation).</p> 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>This method has no effect when the application provides a 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character stream.</p> 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param encoding A string describing the character encoding. 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setSystemId 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getEncoding 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEncoding (String encoding) 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.encoding = encoding; 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 276f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 277f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Get the character encoding for a byte stream or URI. 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This value will be ignored when the application provides a 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character stream. 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return The encoding, or null if none was supplied. 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setByteStream 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getSystemId 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getByteStream 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getEncoding () 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return encoding; 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 292f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 293f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Set the character stream for this input source. 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>If there is a character stream specified, the SAX parser 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * will ignore any byte stream and will not attempt to open 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a URI connection to the system identifier.</p> 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param characterStream The character stream containing the 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * XML document or other entity. 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getCharacterStream 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.io.Reader 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setCharacterStream (Reader characterStream) 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.characterStream = characterStream; 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 310f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 311f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Get the character stream for this input source. 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return The character stream, or null if none was supplied. 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setCharacterStream 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Reader getCharacterStream () 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return characterStream; 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 323f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //////////////////////////////////////////////////////////////////// 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Internal state. 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //////////////////////////////////////////////////////////////////// 328f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String publicId; 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String systemId; 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private InputStream byteStream; 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String encoding; 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Reader characterStream; 334f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// end of InputSource.java 338