Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QXmlSimpleReader类提供了一个简单的XML解析器的实现。More...
继承QXmlReader。
该QXmlSimpleReader类提供了一个简单的XML解析器的实现。
这个XML阅读器是适用于广泛的应用范围。它能够解析格式良好的XML ,并可以报告元素的命名空间的内容处理程序,但是,它不解析任何外部实体。由于历史的原因,属性值规范化和最终的线在不执行1.0规范的XML描述的处理。
使用这个类的最简单的模式是创建一个读取器实例,定义一个输入源,指定要使用的阅读器的处理程序,并解析数据。
例如,我们可以使用一个QFile提供输入。这里,我们创建了一个阅读器,并定义要使用的读取器输入源:
QXmlSimpleReader xmlReader; QXmlInputSource *source = new QXmlInputSource(file);
处理程序可以让我们执行操作时,读写器遇到某些类型的内容,或者如果被发现的输入错误。读者必须被告知要使用的每种类型的事件的处理程序。对于许多常见的应用,我们可以通过继承创建一个自定义处理程序QXmlDefaultHandler,并以此来处理错误和内容的事件:
Handler *handler = new Handler; xmlReader.setContentHandler(handler); xmlReader.setErrorHandler(handler);
如果你不至少设置的内容和错误处理程序,解析器会回到属于它的默认行为---并不会做任何事。
最方便的方法来处理输入是用来阅读它在一个单一的通行证parse(有一个参数,指定输入源)函数:
bool ok = xmlReader.parse(source); if (!ok) std.cout << "Parsing failed." << std.endl;
如果您无法解析整个输入一次过(例如,它是巨大的,或者被传递通过网络连接) ,数据可以在块被送入分析器。这是通过告诉实现parse( )以增量方式工作,使得后续调用parseContinue()函数,直到所有的数据已经被处理。
执行增量分析的一种常用方法是连接readyRead()的一个信号network reply一个时隙,并且有处理接收的数据。看QNetworkAccessManager。
解析行为的某些方面可以用适应setFeature()和setProperty( ) 。
xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
QXmlSimpleReader是不可重入的。如果你想使用这个类在线程代码,使用QXmlSimpleReader具有锁定机构,如锁码QMutex。
构造一个简单的XML阅读器。
从重新实现QXmlReader.contentHandler( ) 。
See also setContentHandler( ) 。
从重新实现QXmlReader.declHandler( ) 。
See also setDeclHandler( ) 。
从重新实现QXmlReader.DTDHandler( ) 。
See also setDTDHandler( ) 。
从重新实现QXmlReader.entityResolver( ) 。
See also setEntityResolver( ) 。
从重新实现QXmlReader.errorHandler( ) 。
See also setErrorHandler( ) 。
从重新实现QXmlReader.feature( ) 。
See also setFeature( ) 。
从重新实现QXmlReader.hasFeature( ) 。
从重新实现QXmlReader.hasProperty( ) 。
从重新实现QXmlReader.lexicalHandler( ) 。
See also setLexicalHandler( ) 。
从重新实现QXmlReader.parse( ) 。
从重新实现QXmlReader.parse( ) 。
读取从XML文档input并分析它在一次通过(非增量) 。返回True如果解析成功,否则返回False 。
继续增量分析,从获取输入QXmlInputSource这是与最近一次调用中指定parse( ) 。要使用此功能,您must呼吁parse()设置为True增量参数。
如果发生解析错误,则返回False ,否则返回True ,即使XML文件的结尾还没有达到。您可以通过再次调用这个函数当有可用来分析更多的数据继续分析在后一阶段。
调用此函数时,有一个在输入源中没有数据表明该XML文件的末尾已到达读者。如果提供了该点的输入是没有很好地形成则发生解析错误,并返回False 。如果提供的输入是良好的,则返回True 。它结束的输入以这种方式,因为它允许您重用读者解析其他XML文件是很重要的。
调用此函数文件的末尾已到达之后,但没有可用的数据会导致错误要返回前一个输入是否是格式良好的或没有。
See also parse( )QXmlInputSource.data()和QXmlInputSource.next( ) 。
从重新实现QXmlReader.property( ) 。
See also setProperty( ) 。
从重新实现QXmlReader.setContentHandler( ) 。
See also contentHandler( ) 。
从重新实现QXmlReader.setDeclHandler( ) 。
See also declHandler( ) 。
从重新实现QXmlReader.setDTDHandler( ) 。
从重新实现QXmlReader.setEntityResolver( ) 。
See also entityResolver( ) 。
从重新实现QXmlReader.setErrorHandler( ) 。
See also errorHandler( ) 。
从重新实现QXmlReader.setFeature( ) 。
打开该功能name如果enable为True,否则将其关闭。
该name参数必须是下列字符串之一:
Feature | Default | Notes |
---|---|---|
http://xml.org/sax/features/namespaces | true | If enabled, namespaces are reported to the content handler. |
http://xml.org/sax/features/namespace-prefixes | false | If enabled, the original prefixed names and attributes used for namespace declarations are reported. |
http://trolltech.com/xml/features/report-whitespace-only-CharData | true | If enabled, CharData that consist of only whitespace characters are reported using QXmlContentHandler.characters(). If disabled, whitespace is silently discarded. |
http://trolltech.com/xml/features/report-start-end-entity | false | If enabled, the parser reports QXmlContentHandler.startEntity() and QXmlContentHandler.endEntity() events, so character data might be reported in chunks. If disabled, the parser does not report these events, but silently substitutes the entities, and reports the character data in one chunk. |
See also feature( )hasFeature()和SAX2 Features。
从重新实现QXmlReader.setLexicalHandler( ) 。
See also lexicalHandler( ) 。
从重新实现QXmlReader.setProperty( ) 。
See also property( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |