public interface XMLReader
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.
注:尽管它的名字,这个接口不延长标准java Reader
接口,因为阅读XML是一种比读字符数据根本不同的活动。
XmlReader是接口,XML解析器的SAX2驱动必须实现。此接口允许应用程序在解析器中设置和查询功能和属性,用于注册文档处理的事件处理程序,并启动文档解析。
所有SAX接口是同步的方法:parse
必须直到解析完成后返回,读者必须等待一个事件处理程序回调在报告的下一个事件的回报。
这个接口取代了(现在已经1 Parser
SAX接口)。XmlReader接口包含在旧的解析器接口的两个重要的增强功能(以及一些次要的):
有适配器转换SAX1解析器SAX2 XmlReader反之亦然。
XMLFilter
,
ParserAdapter
,
XMLReaderAdapter
Modifier and Type | Method and Description |
---|---|
ContentHandler |
getContentHandler()
返回当前内容处理程序。
|
DTDHandler |
getDTDHandler()
返回当前文档处理程序。
|
EntityResolver |
getEntityResolver()
返回当前实体解析器。
|
ErrorHandler |
getErrorHandler()
返回当前的错误处理程序。
|
boolean |
getFeature(String name)
查找功能标志的值。
|
Object |
getProperty(String name)
查找属性的值。
|
void |
parse(InputSource input)
解析一个XML文档。
|
void |
parse(String systemId)
解析一个XML文件从一个系统标识符(URI)。
|
void |
setContentHandler(ContentHandler handler)
允许应用程序注册一个内容事件处理程序。
|
void |
setDTDHandler(DTDHandler handler)
允许应用程序登记DTD事件处理程序。
|
void |
setEntityResolver(EntityResolver resolver)
允许应用程序登记实体解析器。
|
void |
setErrorHandler(ErrorHandler handler)
允许应用程序注册一个错误事件处理程序。
|
void |
setFeature(String name, boolean value)
设置功能标志的值。
|
void |
setProperty(String name, Object value)
设置属性的值。
|
boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
功能名称是完全合格的URI。为XmlReader认识特征的名字但暂时无法返回它的值是可能的。一些特征值可能只在特定的上下文中,例如在解析之前、期间或之后使用。另外,一些特征值可能无法以编程方式访问。(在一个Parser
SAX1,适配器的情况下没有实现独立的方式暴露出底层解析器执行验证,扩大外部实体,等等。)
所有XMLReaders需要承认http://xml.org/sax/features/namespaces和http://xml.org/sax/features/namespace-prefixes功能名称。
典型的用法是这样的:
在R =新mysaxdriver();/尝试激活验证尝试{r.setfeature(“HTTP:/ / XML。org /萨克斯/功能/确认”,真的);} catch(saxexception e){系统错误。println(“不能激活验证。”);}/注册事件处理程序r.setcontenthandler(新mycontenthandler());r.seterrorhandler(新myerrorhandler());/解析第一个文档尝试{r.parse(“HTTP:/ / www.foo。COM / mydoc。XML”);} catch(IOException e){系统错误。println(“I/O异常读取XML文件”);} catch(saxexception e){系统错误。println(“XML例外阅读文档”。);}
实施者是自由的(鼓励)来创造自己的特色,以建立自己的URI的名字。
name
特点的名字,这是一个完全合格的URI。
SAXNotRecognizedException
-如果特征值不能被分配或检索。
SAXNotSupportedException
当XmlReader识别特征名称,但不能确定它的价值在这个时候。
setFeature(java.lang.String, boolean)
void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
功能名称是完全合格的URI。一个XmlReader暴露特征值,但无法改变目前的价值是可能的。一些特征值可以不变或可变的只有在特定的语境中,如前,期间或之后解析。
所有XMLReaders需要支持设置http://xml.org/sax/features/namespaces真实和http://xml.org/sax/features/namespace-prefixes假。
name
特点的名字,这是一个完全合格的URI。
value
特征的请求的值(true或false)。
SAXNotRecognizedException
-如果特征值不能被分配或检索。
SAXNotSupportedException
当XmlReader识别特征的名字,但不能设置请求的值。
getFeature(java.lang.String)
Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是完全合格的URI。为XmlReader识别属性名称,但暂时无法返回它的值是可能的。一些属性值可能只在特定的上下文中可用,例如在解析之前、期间或之后的属性值。
XMLReaders无须承认任何特定的属性名称,虽然最初为核心集记录的SAX2。
实施者是自由的(鼓励)来创造他们自己的特性,以建立自己的URI的名字。
name
-属性的名字,这是一个完全合格的URI。
SAXNotRecognizedException
-如果属性值不能被分配或检索。
SAXNotSupportedException
当XmlReader识别属性名称,但不能确定它的价值在这个时候。
setProperty(java.lang.String, java.lang.Object)
void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是完全合格的URI。为XmlReader识别属性名称,但无法改变当前值,它是可能的。有些属性值可能不变或可变的只有在特定的语境中,如前,期间或之后解析。
XMLReaders无须承认设置任何特定的属性名称,但核心是定义的SAX2。
此方法也是设置扩展处理程序的标准机制。
name
-属性的名字,这是一个完全合格的URI。
value
-请求的性能值。
SAXNotRecognizedException
-如果属性值不能被分配或检索。
SAXNotSupportedException
当XmlReader识别属性名称,但不能设置请求的值。
void setEntityResolver(EntityResolver resolver)
如果应用程序没有登记实体解析器,XmlReader将履行自己的默认分辨率。
应用程序可以登记一个新的或不同的解析器中解析,和SAX解析器必须开始使用新的解析器立即。
resolver
-实体解析器。
getEntityResolver()
EntityResolver getEntityResolver()
setEntityResolver(org.xml.sax.EntityResolver)
void setDTDHandler(DTDHandler handler)
如果应用程序没有登记一个DTD处理,所有的DTD事件由SAX解析器报告会被忽略。
应用程序可以登记一个新的或不同的中解析处理,和SAX解析器必须立即开始使用新的处理程序。
handler
的DTD处理程序。
getDTDHandler()
DTDHandler getDTDHandler()
setDTDHandler(org.xml.sax.DTDHandler)
void setContentHandler(ContentHandler handler)
如果应用程序没有登记内容处理程序,所有内容的事件由SAX解析器报告将被忽略。
应用程序可以登记一个新的或不同的中解析处理,和SAX解析器必须立即开始使用新的处理程序。
handler
-内容处理程序。
getContentHandler()
ContentHandler getContentHandler()
setContentHandler(org.xml.sax.ContentHandler)
void setErrorHandler(ErrorHandler handler)
如果应用程序没有登记错误处理程序,所有的错误事件由SAX解析器报告会被忽略;然而,正常的处理可能不会继续。这是强烈建议所有SAX应用程序执行的错误处理程序,以避免意外的错误。
应用程序可以登记一个新的或不同的中解析处理,和SAX解析器必须立即开始使用新的处理程序。
handler
-错误处理程序。
getErrorHandler()
ErrorHandler getErrorHandler()
setErrorHandler(org.xml.sax.ErrorHandler)
void parse(InputSource input) throws IOException, SAXException
应用程序可以使用此方法指示XML读取器开始解析XML文档的任何有效的输入源(字符流,字节流,或URI)。
应用程序不能调用此方法,解析正在进行(他们应该创建一个新的XmlReader相反每个嵌套的XML文档)。一旦分析完成后,应用程序可以重复使用相同的XmlReader对象,可能使用不同的输入源。的XmlReader对象配置(如处理程序绑定和价值观的确立为特征标志和属性)是由一个解析完成不变,除非这方面配置的定义中明确指定的其他行为。(例如,功能标志或暴露文档的特性的属性被解析。)
在分析,XmlReader将通过注册事件处理程序提供对XML文档的信息。
此方法是同步的:它将不会返回,直到解析结束为止。如果一个客户端应用程序要提前终止解析,它应该抛出一个异常。
input
为XML文档的顶层输入源。
SAXException
-萨克斯例外,可能是包装的另一个例外。
IOException
-从解析器的IO异常,可能从一个字节流和字符流的应用程序提供的。
InputSource
,
parse(java.lang.String)
,
setEntityResolver(org.xml.sax.EntityResolver)
,
setDTDHandler(org.xml.sax.DTDHandler)
,
setContentHandler(org.xml.sax.ContentHandler)
,
setErrorHandler(org.xml.sax.ErrorHandler)
void parse(String systemId) throws IOException, SAXException
此方法是从系统标识符中读取文档的常见情况的快捷方式。它是确切的相当于以下:
解析(新inputsource(systemid));
如果系统标识符是一个网址,它必须在它被传递给解析器之前完全由应用程序解决。
systemId
-系统标识符(URI)。
SAXException
-萨克斯例外,可能是包装的另一个例外。
IOException
-从解析器的IO异常,可能从一个字节流和字符流的应用程序提供的。
parse(org.xml.sax.InputSource)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.