The QAbstractXmlReceiver class provides a callback interface for transforming the output of a QXmlQuery . 更多...
| 头: | #include <QAbstractXmlReceiver> | 
| qmake: | QT += xmlpatterns | 
| Since: | Qt 4.4 | 
| 继承者: | 
该类在 Qt 4.4 引入。
注意: 此类的所有函数 可重入 .
| QAbstractXmlReceiver () | |
| virtual | ~QAbstractXmlReceiver () | 
| virtual void | atomicValue (const QVariant & value ) = 0 | 
| virtual void | 属性 (const QXmlName & name , const QStringRef & value ) = 0 | 
| virtual void | characters (const QStringRef & value ) = 0 | 
| virtual void | comment (const QString & value ) = 0 | 
| virtual void | endDocument () = 0 | 
| virtual void | endElement () = 0 | 
| virtual void | endOfSequence () = 0 | 
| virtual void | namespaceBinding (const QXmlName & name ) = 0 | 
| virtual void | processingInstruction (const QXmlName & target , const QString & value ) = 0 | 
| virtual void | startDocument () = 0 | 
| virtual void | startElement (const QXmlName & name ) = 0 | 
| virtual void | startOfSequence () = 0 | 
QAbstractXmlReceiver is an abstract base class that provides a callback interface for receiving an XQuery sequence , usually the output of an QXmlQuery , and transforming that sequence into a structure of your choosing, usually XML. Consider the example:
QXmlQuery query; query.setQuery("doc('index.html')/html/body/p[1]"); QXmlSerializer serializer(query, myOutputDevice); query.evaluateTo(&serializer);
						First it constructs a
						
							query
						
						that gets the first paragraph from document
						
index.html
						
						. Then it constructs an
						
							XML serializer
						
						采用
						
							query
						
						and
						
							myOutputDevice
						
						(Note the
						
							serializer
						
						是
						
							XML receiver
						
						, ie a subclass of QAbstractXmlReceiver). Finally, it
						
							evaluates
						
						the
						
							query
						
						, producing an ordered sequence of calls to the
						
							serializer's
						
						callback functions. The sequence of callbacks transforms the query output to XML and writes it to
						
							myOutputDevice
						
						.
					
Although the example uses QXmlQuery to produce the sequence of callbacks to functions in QAbstractXmlReceiver, you can call the callback functions directly as long as your sequence of calls represents a valid XQuery sequence .
An XQuery sequence is an ordered collection of zero, one, or many 项 . Each item is either an atomic value 或 node . An atomic value is a simple data value.
There are six kinds of nodes .
The sequence of nodes and atomic values obeys the following rules. Note that Namespace Node refers to a special Attribute Node with name xmlns .
The sequence of nodes and atomic values is sent to an QAbstractXmlReceiver ( QXmlSerializer in the example above) as a sequence of calls to the receiver's callback functions. The mapping of callback functions to sequence items is as follows.
For a complete explanation of XQuery sequences, visit XQuery Data Model .
另请参阅 W3C XQuery 1.0 and XPath 2.0 Data Model (XDM) , QXmlSerializer ,和 QXmlResultItems .
Constructs an abstract xml receiver.
[虚拟]
						
						QAbstractXmlReceiver::
						
							~QAbstractXmlReceiver
						
						()
						
					Destroys the xml receiver.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							atomicValue
						
						(const
						
							
								QVariant
							
						
						&
						value
						)
						
					This callback is called when an atomic value appears in the sequence 。 value is a simple data value . It is guaranteed to be valid .
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							属性
						
						(const
						
							
								QXmlName
							
						
						&
						name
						, const
						
							
								QStringRef
							
						
						&
						value
						)
						
					This callback is called when an attribute node appears in the sequence . name 是 attribute name 和 value string contains the attribute value.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							characters
						
						(const
						
							
								QStringRef
							
						
						&
						value
						)
						
					This callback is called when a text node appears in the sequence 。 value contains the text. Adjacent text nodes may not occur in the sequence , i.e., this callback must not be called twice in a row.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							comment
						
						(const
						
							
								QString
							
						
						&
						value
						)
						
					This callback is called when a comment node appears in the sequence 。 value is the comment text, which must not contain the string "--".
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							endDocument
						
						()
						
					This callback is called when the end of a document node appears in the sequence .
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							endElement
						
						()
						
					This callback is called when the end of an element node appears in the sequence .
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							endOfSequence
						
						()
						
					This callback is called once only, right after the sequence ends.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							namespaceBinding
						
						(const
						
							
								QXmlName
							
						
						&
						name
						)
						
					This callback is called when a namespace binding is in scope of an element. A namespace is defined by a URI. In the QXmlName name , the value of QXmlName::namespaceUri () is that URI. The value of QXmlName::prefix () is the prefix that the URI is bound to. The local name is insignificant and can be an arbitrary value.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							processingInstruction
						
						(const
						
							
								QXmlName
							
						
						&
						
							target
						
						, const
						
							
								QString
							
						
						&
						value
						)
						
					This callback is called when a processing instruction appears in the sequence . A processing instruction is used in an XML document to tell the application reading the document to perform some action. A typical example is to use a processing instruction to tell the application to use a particular XSLT stylesheet to process the document.
<?xml-stylesheet type="test/xsl" href="formatter.xsl"?>
target 是 name of the processing instruction. Its prefix and namespace URI must both be empty. Its local name is the target. In the above example, the name is xml-stylesheet .
The value specifies the action to be taken. Note that the value must not contain the string "?>". In the above example, the value is type="test/xsl" href="formatter.xsl .
Generally, use of processing instructions should be avoided, because they are not namespace aware and in many contexts are stripped out anyway. Processing instructions can often be replaced with elements from a custom namespace.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							startDocument
						
						()
						
					This callback is called when a document node appears in the sequence .
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							startElement
						
						(const
						
							
								QXmlName
							
						
						&
						name
						)
						
					This callback is called when a new element node appears in the sequence . name is the valid name of the node element.
[pure virtual]
						
						
							void
						
						QAbstractXmlReceiver::
						
							startOfSequence
						
						()
						
					This callback is called once only, right before the sequence begins.