- 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)
使用系统标识符创建新的输入源。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 InputStream
getByteStream()
获取此输入源的字节流。Reader
getCharacterStream()
获取此输入源的字符流。String
getEncoding()
获取字节流或URI的字符编码。String
getPublicId()
获取此输入源的公共标识符。String
getSystemId()
获取此输入源的系统标识符。boolean
isEmpty()
指示InputSource
对象是否为空。void
setByteStream(InputStream byteStream)
设置此输入源的字节流。void
setCharacterStream(Reader characterStream)
设置此输入源的字符流。void
setEncoding(String encoding)
设置字符编码(如果已知)。void
setPublicId(String publicId)
设置此输入源的公共标识符。void
setSystemId(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
- 所有输入源(包括公共标识符,系统标识符,字节流和字符流)均为
-
-