public class Driver
extends Object
implements Locator, XMLReader, Attributes
java.lang.Object | |
↳ | org.xmlpull.v1.sax2.Driver |
SAX2驱动程序,它从XmlPullParser中提取事件并将它们转换为SAX2回调函数。
Fields |
|
---|---|
protected ContentHandler |
contentHandler |
protected ErrorHandler |
errorHandler |
protected XmlPullParser |
pp |
protected String |
systemId |
Public constructors |
|
---|---|
Driver() |
|
Driver(XmlPullParser pp) |
Public methods |
|
---|---|
int |
getColumnNumber() 返回当前文档事件结束的列号。 |
ContentHandler |
getContentHandler() 返回当前的内容处理程序。 |
DTDHandler |
getDTDHandler() 返回当前的DTD处理程序。 |
EntityResolver |
getEntityResolver() 返回当前的实体解析器。 |
ErrorHandler |
getErrorHandler() 返回当前的错误处理程序。 |
boolean |
getFeature(String name) 查找功能标志的值。 |
int |
getIndex(String qName) 通过XML限定(前缀)名称查找属性的索引。 |
int |
getIndex(String uri, String localName) 按名称空间名称查找属性的索引。 |
int |
getLength() 返回列表中的属性数量。 |
int |
getLineNumber() 返回当前文档事件结束的行号。 |
String |
getLocalName(int index) 通过索引查找属性的本地名称。 |
Object |
getProperty(String name) 查找一个属性的值。 |
String |
getPublicId() 返回当前文档事件的公共标识符。 |
String |
getQName(int index) 按索引查找属性的XML限定(前缀)名称。 |
String |
getSystemId() 返回当前文档事件的系统标识符。 |
String |
getType(int index) 按索引查找属性的类型。 |
String |
getType(String uri, String localName) 按名称空间名称查找属性的类型。 |
String |
getType(String qName) 按XML限定(前缀)名称查找属性的类型。 |
String |
getURI(int index) 通过索引查找属性的名称空间URI。 |
String |
getValue(int index) 按索引查找属性值。 |
String |
getValue(String qName) 按XML限定(前缀)名称查找属性的值。 |
String |
getValue(String uri, String localName) 按名称空间名称查找属性值。 |
void |
parse(String systemId) 从系统标识符(URI)解析XML文档。 |
void |
parse(InputSource source) 解析一个XML文档。 |
void |
parseSubTree(XmlPullParser pp) |
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) 设置属性的值。 |
Protected methods |
|
---|---|
void |
startElement(String namespace, String localName, String qName) 呼吁 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface org.xml.sax.Locator
|
|
From interface org.xml.sax.XMLReader
|
|
From interface org.xml.sax.Attributes
|
String APACHE_DYNAMIC_VALIDATION_FEATURE
常量值:“http://apache.org/xml/features/validation/dynamic”
String APACHE_SCHEMA_VALIDATION_FEATURE
常量值:“http://apache.org/xml/features/validation/schema”
String DECLARATION_HANDLER_PROPERTY
常量值:“http://xml.org/sax/properties/declaration-handler”
String LEXICAL_HANDLER_PROPERTY
常量值:“http://xml.org/sax/properties/lexical-handler”
String NAMESPACES_FEATURE
常量值:“http://xml.org/sax/features/namespaces”
String NAMESPACE_PREFIXES_FEATURE
常量值:“http://xml.org/sax/features/namespace-prefixes”
String VALIDATION_FEATURE
常量值:“http://xml.org/sax/features/validation”
Driver (XmlPullParser pp)
Parameters | |
---|---|
pp |
XmlPullParser
|
Throws | |
---|---|
XmlPullParserException |
int getColumnNumber ()
返回当前文档事件结束的列号。 这是自上一行结束以来Java char
值的一个数字。
警告:该方法的返回值仅用于诊断的近似值; 它并不打算提供足够的信息来编辑原始XML文档的字符内容。 例如,当行包含组合字符序列,宽字符,代理对或双向文本时,该值可能不对应于文本编辑器显示中的列。
返回值是触发事件的标记出现的文档实体或外部解析实体中的列号的近似值。
如果可能,SAX驱动程序应在与文档事件关联的文本之后提供第一个字符的行位置。 每行的第一列是第1列。
Returns | |
---|---|
int |
The column number, or -1 if none is available. |
ContentHandler getContentHandler ()
返回当前的内容处理程序。
Returns | |
---|---|
ContentHandler |
The current content handler, or null if none has been registered. |
DTDHandler getDTDHandler ()
返回当前的DTD处理程序。
Returns | |
---|---|
DTDHandler |
The current DTD handler, or null if none has been registered. |
EntityResolver getEntityResolver ()
返回当前的实体解析器。
Returns | |
---|---|
EntityResolver |
The current entity resolver, or null if none has been registered. |
ErrorHandler getErrorHandler ()
返回当前的错误处理程序。
Returns | |
---|---|
ErrorHandler |
The current error handler, or null if none has been registered. |
boolean getFeature (String name)
查找功能标志的值。
功能名称是任何完全限定的URI。 XMLReader可能会识别功能名称,但暂时无法返回其值。 某些功能值只能在特定的上下文中使用,例如在解析之前,之中或之后。 此外,某些功能值可能无法通过编程访问。 (对于SAX1 Parser
的适配器,没有独立于实现的方式来显示底层解析器是否执行验证,扩展外部实体等等。)
所有XMLReader都需要识别http://xml.org/sax/features/namespaces和http://xml.org/sax/features/namespace-prefixes功能名称。
典型的用法是这样的:
XMLReader r = new MySAXDriver(); // try to activate validation try { r.setFeature("http://xml.org/sax/features/validation", true); } catch (SAXException e) { System.err.println("Cannot activate validation."); } // register event handlers r.setContentHandler(new MyContentHandler()); r.setErrorHandler(new MyErrorHandler()); // parse the first document try { r.parse("http://www.foo.com/mydoc.xml"); } catch (IOException e) { System.err.println("I/O exception reading XML document"); } catch (SAXException e) { System.err.println("XML exception reading document."); }
实现者可以免费(并鼓励)使用构建在他们自己的URI上的名称来创建自己的特性。
Parameters | |
---|---|
name |
String : The feature name, which is a fully-qualified URI. |
Returns | |
---|---|
boolean |
The current value of the feature (true or false). |
Throws | |
---|---|
SAXNotRecognizedException |
|
SAXNotSupportedException |
int getIndex (String qName)
通过XML限定(前缀)名称查找属性的索引。
Parameters | |
---|---|
qName |
String : The qualified (prefixed) name. |
Returns | |
---|---|
int |
The index of the attribute, or -1 if it does not appear in the list. |
int getIndex (String uri, String localName)
按名称空间名称查找属性的索引。
Parameters | |
---|---|
uri |
String : The Namespace URI, or the empty string if the name has no Namespace URI. |
localName |
String : The attribute's local name. |
Returns | |
---|---|
int |
The index of the attribute, or -1 if it does not appear in the list. |
int getLength ()
返回列表中的属性数量。
Once you know the number of attributes, you can iterate through the list.
Returns | |
---|---|
int |
The number of attributes in the list. |
int getLineNumber ()
返回当前文档事件结束的行号。 行由行结束符定义,这些行结束符在XML规范中定义。
警告:该方法的返回值仅用于诊断的近似值; 它并不打算提供足够的信息来编辑原始XML文档的字符内容。 在某些情况下,这些“行”号与显示为列的内容匹配,而在其他情况下,由于内部实体扩展,这些号可能与源文本不匹配。
返回值是触发事件的标记出现的文档实体或外部解析实体中的行号的近似值。
如果可能,SAX驱动程序应在与文档事件关联的文本之后提供第一个字符的行位置。 第一行是第一行。
Returns | |
---|---|
int |
The line number, or -1 if none is available. |
String getLocalName (int index)
通过索引查找属性的本地名称。
Parameters | |
---|---|
index |
int : The attribute index (zero-based). |
Returns | |
---|---|
String |
The local name, or the empty string if Namespace processing is not being performed, or null if the index is out of range. |
Object getProperty (String name)
查找一个属性的值。
属性名称是任何完全限定的URI。 XMLReader可能会识别属性名称,但暂时无法返回其值。 某些属性值可能仅在特定上下文中可用,例如在解析之前,之中或之后。
XMLReaders不需要识别任何特定的属性名称,但是初始核心集合记录在SAX2中。
Implementors are free (and encouraged) to invent their own properties, using names built on their own URIs.
Parameters | |
---|---|
name |
String : The property name, which is a fully-qualified URI. |
Returns | |
---|---|
Object |
The current value of the property. |
Throws | |
---|---|
SAXNotRecognizedException |
|
SAXNotSupportedException |
String getPublicId ()
返回当前文档事件的公共标识符。
返回值是文档实体或触发事件的标记出现的外部解析实体的公共标识符。
Returns | |
---|---|
String |
A string containing the public identifier, or null if none is available. |
String getQName (int index)
按索引查找属性的XML限定(前缀)名称。
Parameters | |
---|---|
index |
int : The attribute index (zero-based). |
Returns | |
---|---|
String |
The XML qualified name, or the empty string if none is available, or null if the index is out of range. |
String getSystemId ()
返回当前文档事件的系统标识符。
返回值是文档实体或触发事件的标记出现的外部解析实体的系统标识符。
如果系统标识符是URL,则解析器必须在将其传递给应用程序之前将其完全解析。 例如,一个文件名必须总是作为一个文件提供:... URL,其他类型的相对URI也将根据它们的基础进行解析。
Returns | |
---|---|
String |
A string containing the system identifier, or null if none is available. |
String getType (int index)
按索引查找属性的类型。
属性类型是字符串“CDATA”,“ID”,“IDREF”,“IDREFS”,“NMTOKEN”,“NMTOKENS”,“ENTITY”,“ENTITIES”或“NOTATION”中的一个(始终为大写) 。
如果解析器没有读取属性声明,或者解析器没有报告属性类型,那么它必须按照XML 1.0建议书(第3.3.3节“属性值标准化”)中的规定返回值“CDATA” )。
对于不是符号的枚举属性,解析器将报告类型为“NMTOKEN”。
Parameters | |
---|---|
index |
int : The attribute index (zero-based). |
Returns | |
---|---|
String |
The attribute's type as a string, or null if the index is out of range. |
String getType (String uri, String localName)
按名称空间名称查找属性的类型。
有关可能的类型的说明,请参阅 getType(int)
。
Parameters | |
---|---|
uri |
String : The Namespace URI, or the empty String if the name has no Namespace URI. |
localName |
String : The local name of the attribute. |
Returns | |
---|---|
String |
The attribute type as a string, or null if the attribute is not in the list or if Namespace processing is not being performed. |
String getType (String qName)
按XML限定(前缀)名称查找属性的类型。
有关可能的类型的说明,请参阅 getType(int)
。
Parameters | |
---|---|
qName |
String : The XML qualified name. |
Returns | |
---|---|
String |
The attribute type as a string, or null if the attribute is not in the list or if qualified names are not available. |
String getURI (int index)
通过索引查找属性的名称空间URI。
Parameters | |
---|---|
index |
int : The attribute index (zero-based). |
Returns | |
---|---|
String |
The Namespace URI, or the empty string if none is available, or null if the index is out of range. |
String getValue (int index)
按索引查找属性值。
如果属性值是标记列表(IDREFS,ENTITIES或NMTOKENS),则令牌将连接成单个字符串,每个令牌由一个空格分隔。
Parameters | |
---|---|
index |
int : The attribute index (zero-based). |
Returns | |
---|---|
String |
The attribute's value as a string, or null if the index is out of range. |
String getValue (String qName)
按XML限定(前缀)名称查找属性的值。
有关可能值的说明,请参阅 getValue(int)
。
Parameters | |
---|---|
qName |
String : The XML qualified name. |
Returns | |
---|---|
String |
The attribute value as a string, or null if the attribute is not in the list or if qualified names are not available. |
String getValue (String uri, String localName)
按名称空间名称查找属性值。
有关可能值的说明,请参阅 getValue(int)
。
Parameters | |
---|---|
uri |
String : The Namespace URI, or the empty String if the name has no Namespace URI. |
localName |
String : The local name of the attribute. |
Returns | |
---|---|
String |
The attribute value as a string, or null if the attribute is not in the list. |
void parse (String systemId)
从系统标识符(URI)解析XML文档。
此方法是从系统标识符中读取文档的常见情况的快捷方式。 这与以下内容完全相同:
parse(new InputSource(systemId));
If the system identifier is a URL, it must be fully resolved by the application before it is passed to the parser.
Parameters | |
---|---|
systemId |
String : The system identifier (URI). |
Throws | |
---|---|
SAXException |
|
IOException |
void parse (InputSource source)
解析一个XML文档。
应用程序可以使用此方法来指示XML阅读器开始从任何有效的输入源(字符流,字节流或URI)解析XML文档。
应用程序可能不会在解析过程中调用此方法(它们应该为每个嵌套的XML文档创建一个新的XMLReader)。 解析完成后,应用程序可能会重用相同的XMLReader对象,可能会使用不同的输入源。 除非配置的该方面的定义明确指定了其他行为,否则XMLReader对象的配置(例如为功能标志和属性建立的处理程序绑定和值)不会改变。 (例如,特征标志或属性暴露了正在分析的文档的特征。)
在解析过程中,XMLReader将通过注册的事件处理程序提供有关XML文档的信息。
这种方法是同步的:直到解析结束才会返回。 如果客户端应用程序想要尽早终止解析,它应该抛出异常。
Parameters | |
---|---|
source |
InputSource : The input source for the top-level of the XML document. |
Throws | |
---|---|
SAXException |
|
IOException |
void parseSubTree (XmlPullParser pp)
Parameters | |
---|---|
pp |
XmlPullParser
|
Throws | |
---|---|
SAXException |
|
IOException |
void setContentHandler (ContentHandler handler)
允许应用程序注册内容事件处理程序。
如果应用程序未注册内容处理程序,则SAX解析器报告的所有内容事件都将被忽略。
应用程序可以在解析中注册新的或不同的处理程序,并且SAX解析器必须立即开始使用新的处理程序。
Parameters | |
---|---|
handler |
ContentHandler : The content handler. |
void setDTDHandler (DTDHandler handler)
允许应用程序注册DTD事件处理程序。
如果应用程序未注册DTD处理程序,则SAX解析器报告的所有DTD事件都将被忽略。
应用程序可以在解析中注册新的或不同的处理程序,并且SAX解析器必须立即开始使用新的处理程序。
Parameters | |
---|---|
handler |
DTDHandler : The DTD handler. |
void setEntityResolver (EntityResolver resolver)
允许应用程序注册实体解析器。
如果应用程序未注册实体解析器,则XMLReader将执行其自己的默认解析。
应用程序可以在解析中注册一个新的或不同的解析器,并且SAX解析器必须立即开始使用新的解析器。
Parameters | |
---|---|
resolver |
EntityResolver : The entity resolver. |
void setErrorHandler (ErrorHandler handler)
允许应用程序注册错误事件处理程序。
如果应用程序没有注册错误处理程序,则SAX解析器报告的所有错误事件将被忽略; 但是,正常的处理可能不会继续。 强烈建议所有SAX应用程序实施错误处理程序以避免意外的错误。
应用程序可以在解析中注册新的或不同的处理程序,并且SAX解析器必须立即开始使用新的处理程序。
Parameters | |
---|---|
handler |
ErrorHandler : The error handler. |
void setFeature (String name, boolean value)
设置功能标志的值。
功能名称是任何完全限定的URI。 XMLReader可能公开一个特征值,但无法更改当前值。 某些特征值只能在特定上下文中不可变或可变,例如在解析之前,之中或之后。
All XMLReaders are required to support setting http://xml.org/sax/features/namespaces to true and http://xml.org/sax/features/namespace-prefixes to false.
Parameters | |
---|---|
name |
String : The feature name, which is a fully-qualified URI. |
value |
boolean : The requested value of the feature (true or false). |
Throws | |
---|---|
SAXNotRecognizedException |
|
SAXNotSupportedException |
void setProperty (String name, Object value)
设置属性的值。
属性名称是任何完全限定的URI。 XMLReader可能会识别属性名称,但无法更改当前值。 某些属性值只有在特定的上下文中才可以是不可变的或可变的,例如在解析之前,之中或之后。
XMLReaders不需要识别设置任何特定的属性名称,但核心集由SAX2定义。
该方法也是设置扩展处理程序的标准机制。
Parameters | |
---|---|
name |
String : The property name, which is a fully-qualified URI. |
value |
Object : The requested value for the property. |
Throws | |
---|---|
SAXNotRecognizedException |
|
SAXNotSupportedException |
void startElement (String namespace, String localName, String qName)
呼吁startElement
上ContentHandler
与this
驱动程序对象为Attributes
的实现。 在默认实现Attributes
对象仅在此方法调用期间有效并且可能不存储。 子类可以覆盖此方法来缓存属性。
Parameters | |
---|---|
namespace |
String
|
localName |
String
|
qName |
String
|
Throws | |
---|---|
SAXException |