- java.lang.Object
 -  
      
- org.xml.sax.InputSource
 
 
-  
       
public class InputSource extends Object
XML实体的单个输入源。This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.
此类允许SAX应用程序在单个对象中封装有关输入源的信息,该对象可包括公共标识符,系统标识符,字节流(可能具有指定的编码)和/或字符流。
应用程序有两个地方可以向解析器提供输入源:作为Parser.parse方法的参数,或者作为EntityResolver.resolveEntity方法的返回值。
SAX解析器将使用InputSource对象来确定如何读取XML输入。 如果有可用的字符流,解析器将直接读取该流,忽略在该流中找到的任何文本编码声明。 如果没有字符流,但是有一个字节流,解析器将使用该字节流,使用InputSource中指定的编码,否则(如果未指定编码)使用诸如之一的算法自动检测字符编码XML规范。 如果字符流和字节流都不可用,则解析器将尝试打开与系统标识符标识的资源的URI连接。
InputSource对象属于应用程序:SAX解析器永远不会以任何方式修改它(如果需要,它可以修改副本)。 但是,字节流和字符流的标准处理是在解析结束清理时关闭它们,因此应用程序在将它们传递给解析器后不应尝试重新使用这些流。
- 从以下版本开始:
 - 1.4,SAX 1.0
 - 另请参见:
 -  
         
XMLReader.parse(org.xml.sax.InputSource),EntityResolver.resolveEntity(java.lang.String, java.lang.String),InputStream,Reader 
 
-  
        
       
-  
             
构造方法摘要
构造方法 构造器 描述 InputSource()零参数默认构造函数。InputSource(InputStream byteStream)使用字节流创建新的输入源。InputSource(Reader characterStream)使用字符流创建新的输入源。InputSource(String systemId)使用系统标识符创建新的输入源。 
-  
             
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 InputStreamgetByteStream()获取此输入源的字节流。ReadergetCharacterStream()获取此输入源的字符流。StringgetEncoding()获取字节流或URI的字符编码。StringgetPublicId()获取此输入源的公共标识符。StringgetSystemId()获取此输入源的系统标识符。booleanisEmpty()指示InputSource对象是否为空。voidsetByteStream(InputStream byteStream)设置此输入源的字节流。voidsetCharacterStream(Reader characterStream)设置此输入源的字符流。voidsetEncoding(String encoding)设置字符编码(如果已知)。voidsetPublicId(String publicId)设置此输入源的公共标识符。voidsetSystemId(String systemId)设置此输入源的系统标识符。 
 -  
             
 
-  
        
       
-  
             
构造方法详细信息
-  
InputSource
public InputSource()
零参数默认构造函数。 
-  
InputSource
public InputSource(String systemId)
使用系统标识符创建新的输入源。应用程序也可以使用setPublicId来包含公共标识符,或者使用setEncoding来指定字符编码(如果已知)。
如果系统标识符是URL,则必须完全解析(可能不是相对URL)。
- 参数
 -  
              
systemId- 系统标识符(URI)。 - 另请参见:
 -  
              
setPublicId(java.lang.String),setSystemId(java.lang.String),setByteStream(java.io.InputStream),setEncoding(java.lang.String),setCharacterStream(java.io.Reader) 
 
-  
InputSource
public InputSource(InputStream byteStream)
使用字节流创建新的输入源。应用程序编写者应该使用setSystemId()来提供解析相对URI的基础,可以使用setPublicId来包含公共标识符,并且可以使用setEncoding来指定对象的字符编码。
- 参数
 -  
              
byteStream- 包含文档的原始字节流。 - 另请参见:
 -  
              
setPublicId(java.lang.String),setSystemId(java.lang.String),setEncoding(java.lang.String),setByteStream(java.io.InputStream),setCharacterStream(java.io.Reader) 
 
-  
InputSource
public InputSource(Reader characterStream)
使用字符流创建新的输入源。应用程序编写者应该使用setSystemId()来提供解析相对URI的基础,并且可以使用setPublicId来包含公共标识符。
字符流不应包含字节顺序标记。
 
 -  
 
-  
             
方法详细信息
-  
setPublicId
public void setPublicId(String publicId)
设置此输入源的公共标识符。公共标识符始终是可选的:如果应用程序编写器包含一个,它将作为位置信息的一部分提供。
- 参数
 -  
              
publicId- 公共标识符作为字符串。 - 另请参见:
 -  
              
getPublicId(),Locator.getPublicId(),SAXParseException.getPublicId() 
 
-  
getPublicId
public String getPublicId()
获取此输入源的公共标识符。- 结果
 - 公共标识符,如果没有提供,则为null。
 - 另请参见:
 -  
              
setPublicId(java.lang.String) 
 
-  
setSystemId
public void setSystemId(String systemId)
设置此输入源的系统标识符。如果存在字节流或字符流,则系统标识符是可选的,但是提供一个字符串仍然很有用,因为应用程序可以使用它来解析相对URI并将其包含在错误消息和警告中(解析器将尝试仅在没有指定字节流或字符流时才打开与URI的连接。
如果应用程序知道系统标识符指向的对象的字符编码,则它可以使用setEncoding方法注册编码。
如果系统标识符是URL,则必须完全解析(可能不是相对URL)。
- 参数
 -  
              
systemId- 系统标识符为字符串。 - 另请参见:
 -  
              
setEncoding(java.lang.String),getSystemId(),Locator.getSystemId(),SAXParseException.getSystemId() 
 
-  
getSystemId
public String getSystemId()
获取此输入源的系统标识符。getEncoding方法将返回指向的对象的字符编码,如果未知则返回null。
如果系统ID是URL,则将完全解析。
- 结果
 - 系统标识符,如果没有提供,则为null。
 - 另请参见:
 -  
              
setSystemId(java.lang.String),getEncoding() 
 
-  
setByteStream
public void setByteStream(InputStream byteStream)
设置此输入源的字节流。如果还指定了字符流,SAX解析器将忽略它,但它将优先使用字节流来打开URI连接本身。
如果应用程序知道字节流的字符编码,则应使用setEncoding方法设置它。
- 参数
 -  
              
byteStream- 包含XML文档或其他实体的字节流。 - 另请参见:
 -  
              
setEncoding(java.lang.String),getByteStream(),getEncoding(),InputStream 
 
-  
getByteStream
public InputStream getByteStream()
获取此输入源的字节流。getEncoding方法将返回此字节流的字符编码,如果未知则返回null。
- 结果
 - 字节流,如果没有提供,则为null。
 - 另请参见:
 -  
              
getEncoding(),setByteStream(java.io.InputStream) 
 
-  
setEncoding
public void setEncoding(String encoding)
设置字符编码(如果已知)。编码必须是XML编码声明可接受的字符串(请参阅XML 1.0建议的第4.3.3节)。
当应用程序提供字符流时,此方法无效。
- 参数
 -  
              
encoding- 描述字符编码的字符串。 - 另请参见:
 -  
              
setSystemId(java.lang.String),setByteStream(java.io.InputStream),getEncoding() 
 
-  
getEncoding
public String getEncoding()
获取字节流或URI的字符编码。 当应用程序提供字符流时,将忽略此值。- 结果
 - 编码,如果没有提供,则为null。
 - 另请参见:
 -  
              
setByteStream(java.io.InputStream),getSystemId(),getByteStream() 
 
-  
setCharacterStream
public void setCharacterStream(Reader characterStream)
设置此输入源的字符流。如果指定了字符流,SAX解析器将忽略任何字节流,并且不会尝试打开与系统标识符的URI连接。
- 参数
 -  
              
characterStream- 包含XML文档或其他实体的字符流。 - 另请参见:
 -  
              
getCharacterStream(),Reader 
 
-  
getCharacterStream
public Reader getCharacterStream()
获取此输入源的字符流。- 结果
 - 字符流,如果没有提供,则为null。
 - 另请参见:
 -  
              
setCharacterStream(java.io.Reader) 
 
-  
isEmpty
public boolean isEmpty()
指示InputSource对象是否为空。 Empty定义如下:-  所有输入源(包括公共标识符,系统标识符,字节流和字符流)均为
null。 -  公共标识符和系统标识符为
null,字节和字符流为null或不包含字节或字符。请注意,如果提供了字节流,则此方法将重置字节流;如果未提供字节流,则此方法将重置字符流。
 
如果在检查字节或字符流时出错,该方法将返回false以允许XML处理器处理错误。
- 结果
 - 
               如果 
              
InputSource对象为空,则返回true,否则返回false 
 -  所有输入源(包括公共标识符,系统标识符,字节流和字符流)均为
 
 -  
 
 -