Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QDomDocument类表示XML文档。More...
继承QDomNode。
该QDomDocument类表示XML文档。
该QDomDocument类代表整个XML文档。从概念上讲,它是文档树的根,并提供主要访问到文档的数据。
由于元素,文本节点,注释,处理指令等,不能在文档的上下文之外存在,文件类还包含创建这些对象所需的工厂函数。创建节点对象有一个ownerDocument( )函数并将它们与在文档的背景下,他们创建的。将使用DOM类最经常是QDomNode, QDomDocument ,QDomElement和QDomText。
解析后的XML是由可以使用各种QDom类访问对象树内部表示。只有所有QDom类reference在内部树的对象。一旦引用他们和QDomDocument本身最后QDom对象被删除在DOM树中的内部对象会被删除。
完成创作元素,文本节点等的使用在这个类中提供的各种工厂的功能。使用QDom类的默认构造函数只会造成无法操纵或插入到文档中的空对象。
该QDomDocument类有多种功能,用于创建文件的数据,例如,createElement( )createTextNode( )createComment( )createCDATASection( )createProcessingInstruction( )createAttribute()和createEntityReference( ) 。其中的一些功能有支持命名空间的版本,即createElementNS()和createAttributeNS( ) 。该createDocumentFragment()函数是用于保存文件的部分,这是用于操作复杂的文件是有用的。
该文件的整个内容设置与setContent( ) 。这个函数解析它通过为XML文档的字符串,并创建DOM树,代表该文件。使用根元素可用documentElement( ) 。可使用获得的文件的文字表述toString( ) 。
Note:DOM树可能最终保留了大量的内存,如果XML文档是很大的。对于大的XML文档,QXmlStreamReader或QXmlQuery类可能是更好的解决方案。
它可以使用插入来自另一个文档中的节点插入到文档中importNode( ) 。
可以得到所有具有带有特定标记的元素的列表elementsByTagName()或与elementsByTagNameNS( ) 。
该QDom类通常使用如下:
QDomDocument doc("mydocument"); QFile file("mydocument.xml"); if (!file.open(QIODevice.ReadOnly)) return; if (!doc.setContent(&file)) { file.close(); return; } file.close(); // print out the element names of all elements that are direct children // of the outermost element. QDomElement docElem = doc.documentElement(); QDomNode n = docElem.firstChild(); while(!n.isNull()) { QDomElement e = n.toElement(); // try to convert the node to an element. if(!e.isNull()) { cout << qPrintable(e.tagName()) << endl; // the node really is an element. } n = n.nextSibling(); } // Here we append a new element to the end of the document QDomElement elem = doc.createElement("img"); elem.setAttribute("src", "myimage.png"); docElem.appendChild(elem);
一旦doc和elem走出去的范围,表示XML文档的整个内部树被删除。
若要使用这样的DOM代码使用的文件:
QDomDocument doc("MyML"); QDomElement root = doc.createElement("MyML"); doc.appendChild(root); QDomElement tag = doc.createElement("Greeting"); root.appendChild(tag); QDomText t = doc.createTextNode("Hello World"); tag.appendChild(t); QString xml = doc.toString();
关于文档对象模型更多信息,请参阅文档对象模型(DOM )Level 1和Level 2 Core规格。
构造一个空文档。
创建文档并设置文档类型的名称name。
创建具有文档类型的文档doctype。
See also QDomImplementation.createDocumentType( ) 。
构造的副本x。
副本的数据是共享的(浅拷贝) :修改一个节点也将改变其他。如果你想使一个深拷贝,使用cloneNode( ) 。
创建一个名为新的属性name该可插入一个元素,例如运用QDomElement.setAttributeNode( ) 。
If name是不是一个有效的XML名称,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also createAttributeNS( ) 。
创建一个具有可插入一个元素的命名空间支持一个新的属性。该属性的名称是qName和命名空间URI为nsURI。该功能还将QDomNode.prefix()和QDomNode.localName( )为适当的值(取决于qName) 。
If qName是不是一个有效的XML名称,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also createAttribute( ) 。
创建字符串一个新的CDATA节value能够被插入到文档中,例如运用QDomNode.appendChild( ) 。
If value包含不能被存储在一个CDATA节的字符,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also QDomNode.appendChild( )QDomNode.insertBefore()和QDomNode.insertAfter( ) 。
创建字符串新评论value能够被插入到文档中,例如运用QDomNode.appendChild( ) 。
If value包含不能被存储在XML注释字符,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also QDomNode.appendChild( )QDomNode.insertBefore()和QDomNode.insertAfter( ) 。
创建一个新的文档片段,可用于保存文件的部分,例如做文档树的复杂的操作时。
创建一个名为新元素tagName能够被插入到DOM树中,例如运用QDomNode.appendChild( ) 。
If tagName是不是一个有效的XML名称,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also createElementNS( )QDomNode.appendChild()和QDomNode.insertBefore( ) 。
创建一个具有可插入到DOM树中的命名空间支持的新元素。元素的名称是qName和命名空间URI为nsURI。该功能还将QDomNode.prefix()和QDomNode.localName( )为适当的值(取决于qName) 。
If qName是一个空字符串,返回一个空元素不管无效的数据策略是否被设置。
See also createElement( ) 。
创建一个名为一个新的实体引用name能够被插入到文档中,例如运用QDomNode.appendChild( ) 。
If name是不是一个有效的XML名称,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also QDomNode.appendChild( )QDomNode.insertBefore()和QDomNode.insertAfter( ) 。
创建一个新的处理指令可以被插入到文档中,例如运用QDomNode.appendChild( ) 。此功能设置为处理指令的目标target以及将数据data。
If target是不是一个有效的XML名称,或者数据,如果包含不能出现在一个处理指令字符,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also QDomNode.appendChild( )QDomNode.insertBefore()和QDomNode.insertAfter( ) 。
创建字符串的文本节点value能够被插入到文档树,例如运用QDomNode.appendChild( ) 。
If value包含不能被保存为一个XML文档(即使在字符引用的形式)的字符数据的字符,这个函数的行为受约束QDomImplementation.InvalidDataPolicy。
See also QDomNode.appendChild( )QDomNode.insertBefore()和QDomNode.insertAfter( ) 。
返回此文件的文件类型。
返回文档的根元素。
返回其ID等于元件elementId。如果被发现与ID号的元素,这个函数返回一个null element。
由于QDomClasses不知道哪个属性是元素的ID ,这个函数返回一个永远null element。这可能会改变在未来的版本。
返回QDomNodeList,包含所有文件中的名称元素tagname。节点列表的顺序是它们在元素树的先序遍历出现的顺序。
See also elementsByTagNameNS()和QDomElement.elementsByTagName( ) 。
返回QDomNodeList包含所有的文件与本地名称的元素localName和命名空间的URInsURI。节点列表的顺序是它们在元素树的先序遍历出现的顺序。
See also elementsByTagName()和QDomElement.elementsByTagNameNS( ) 。
返回QDomImplementation对象。
进口的节点importedNode从另一个文件于本文件。importedNode仍然在原始文档中,该函数创建一个可以在此文档中使用的副本。
该函数返回输入节点属于这个文件。返回的节点没有父。这是不可能的导入QDomDocument和QDomDocumentType节点。在这种情况下,该函数返回一个null node。
If deep诚然,这个功能的进口不仅节点importedNode但它的整个子树,如果它是假的,只有importedNode是进口的。这个论点deep有对无影响QDomAttr和QDomEntityReference节点,因为的后代QDomAttr节点总是进口和那些QDomEntityReference节点永远不会进口。
此函数的行为是稍有不同,这取决于节点类型:
Node Type | Behavior |
---|---|
QDomAttr | The owner element is set to 0 and the specified flag is set to true in the generated attribute. The whole subtree of importedNode is always imported for attribute nodes: deep has no effect. |
QDomDocument | Document nodes cannot be imported. |
QDomDocumentFragment | If deep is true, this function imports the whole document fragment; otherwise it only generates an empty document fragment. |
QDomDocumentType | Document type nodes cannot be imported. |
QDomElement | Attributes for which QDomAttr.specified() is true are also imported, other attributes are not imported. If deep is true, this function also imports the subtree of importedNode; otherwise it imports only the element node (and some attributes, see above). |
QDomEntity | Entity nodes can be imported, but at the moment there is no way to use them since the document type is read-only in DOM level 2. |
QDomEntityReference | Descendants of entity reference nodes are never imported: deep has no effect. |
QDomNotation | Notation nodes can be imported, but at the moment there is no way to use them since the document type is read-only in DOM level 2. |
QDomProcessingInstruction | The target and value of the processing instruction is copied to the new node. |
QDomText | The text is copied to the new node. |
QDomCDATASection | The text is copied to the new node. |
QDomComment | The text is copied to the new node. |
QDomNode.insertAfter( )QDomNode.replaceChild( )QDomNode.removeChild( )QDomNode.appendChild( )
See also QDomElement.setAttribute()和QDomNode.insertBefore( ) 。
Returns DocumentNode。
该函数从字节数组解析XML文档data并且将其设置为文件的内容。它会尝试检测文件的编码所要求的XML规范。
If namespaceProcessing诚然,解析器识别命名空间的XML文件中,并设置前缀名,本地名称和命名空间URI为适当的值。如果namespaceProcessing是假的,解析器确实没有命名空间的处理时,它读取XML文件。
如果出现语法错误,这个函数返回False ,并且错误信息被放置在*errorMsg中的行号*errorLine并且在列号*errorColumn(除非相关指针设置为0 ) ,否则该函数返回True。各种错误信息的描述QXmlParseException类文档。需要注意的是,如果你想显示这些错误信息到您的应用程序的用户,他们将,除非他们明确地翻译英文显示。
If namespaceProcessing为真时,函数QDomNode.prefix( )返回一个字符串的所有元素和属性。它返回一个空字符串,如果该元素或属性没有前缀。
空白只包括文本节点被剥离,而不会出现在QDomDocument。如果这种行为是不是需要,可以使用使用setContent ()重载,允许QXmlReader要被提供。
If namespaceProcessing是假的,功能QDomNode.prefix( )QDomNode.localName()和QDomNode.namespaceURI( )返回一个空字符串。
实体引用的处理方式如下:
QDomNode.prefix( )QString.isNull( )QString.isEmpty( )
Warning:此功能不reentrant。
See also QDomNode.namespaceURI()和QDomNode.localName( ) 。
这是一个重载函数。
该函数从字符串读取XML文档text,返回True,如果内容被成功解析,否则返回False 。自text已经是一个Unicode字符串,没有编码检测完成。
这是一个重载函数。
该函数读取从IO设备的XML文档dev,返回True,如果内容被成功解析,否则返回False 。
这是一个重载函数。
该函数从XML文档QXmlInputSource source,返回True,如果内容被成功解析,否则返回False 。
此功能被引入Qt的4.5 。
这是一个重载函数。
该函数从字符串读取XML文档text,返回True,如果内容被成功解析,否则返回False 。自text已经是一个Unicode字符串,不进行任何编码检测。
不执行任何命名空间的处理要么。
这是一个重载函数。
该函数读取从字节数组的XML文档buffer,返回True,如果内容被成功解析,否则返回False 。
不执行任何命名空间的处理。
这是一个重载函数。
该函数读取从IO设备的XML文档dev,返回True,如果内容被成功解析,否则返回False 。
不执行任何命名空间的处理。
这是一个重载函数。
该函数从XML文档QXmlInputSource source并与解析它QXmlReader reader,返回True,如果内容被成功解析,否则返回False 。
此功能不会改变的特点reader。如果你想使用某些功能解析您可以使用此功能来设立适当的读者。
See also QXmlSimpleReader。
解析后的文档转换回其文字表述,并返回一个QByteArray含有编码为UTF- 8的数据。
此函数使用indent由于空间的子元素缩进量。
See also toString( ) 。
解析后的文档转换回其文字表述。
此函数使用indent由于空间的子元素缩进量。
If indent为-1 ,任何空白都被添加。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |