org.xml.sax

接口
异常
java.lang.Object
  继承者 org.xml.sax.InputSource

public class InputSource
     
extends Object

XML 实体的单一输入源。

此模块(包括源代码和文档)在公共域中,同时 没有担保有关更多信息,请参阅 http://www.saxproject.org

此类允许 SAX 应用程序封装有关单个对象中的输入源的信息,它可包括公共标识符、系统标识符、字节流(可能带有指定的编码)、基本 URI 和/ 或字符流。

在以下两种情况下应用程序可以将输入源提供给解析器:作为 Parser.parse 方法的参数,或者作为 EntityResolver.resolveEntity 方法的返回值。

SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入。如果有字符流可用,则解析器将直接读取该流,而忽略该流中找到的任何文本编码声明。如果没有字符流,但却有字节流,则解析器将使用该字节流,从而使用在 InputSource 中指定的编码,或者另外(如果未指定编码)通过使用某种诸如 XML 规范 中的算法算法自动探测字符编码。如果既没有字符流,又没有字节流可用,则解析器将尝试打开到由系统标识符标识的资源的 URI 连接。

InputSource 对象属于该应用程序:SAX 解析器将不会以任何方式修改它(它可以在必要时修改副本)。但是,作为解析终止清除的一部分,对字节流和字符流的标准处理就是关闭这二者,因此在将此类流传递给解析器后应用程序不应尝试重新使用它们。

从以下版本开始:
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()
          获取此输入源的系统标识符。
 void setByteStream(InputStream byteStream)
          设置此输入源的字节流。
 void setCharacterStream(Reader characterStream)
          设置此输入源的字符流。
 void setEncoding(String encoding)
          设置字符编码(如果已知)。
 void setPublicId(String publicId)
          设置此输入源的公共标识符。
 void setSystemId(String systemId)
          设置此输入源的系统标识符。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

InputSource

public InputSource()
零参数默认构造方法。

另请参见:
setPublicId(java.lang.String), setSystemId(java.lang.String), setByteStream(java.io.InputStream), setCharacterStream(java.io.Reader), setEncoding(java.lang.String)

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(java.lang.String), setSystemId(java.lang.String), setByteStream(java.io.InputStream), setCharacterStream(java.io.Reader)
方法详细信息

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 recommendation" 的 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)