- 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
-
-
构造方法摘要
构造方法 Constructor 描述 InputSource()
零参数默认构造函数。InputSource(InputStream byteStream)
创建一个带有字节流的新输入源。InputSource(Reader characterStream)
创建一个带有字符流的新输入源。InputSource(String systemId)
创建一个带有系统标识符的新输入源。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
对象是否为空。 空的定义如下:- 包括公共标识符,系统标识符,字节流和字符流在内的所有输入源均为
null
。 - 公共标识符和系统标识符为
null
,字节和字符流为null
也不包含字节或字符。请注意,如果提供字节流,则此方法将重置字节流,如果未提供字节流,则将返回字符流。
在检查字节或字符流时发生错误的情况下,该方法将返回false,以允许XML处理器处理错误。
- 结果
-
如果
InputSource
对象为空,InputSource
true,否则为false
- 包括公共标识符,系统标识符,字节流和字符流在内的所有输入源均为
-
-