zoukankan      html  css  js  c++  java
  • QDomDocument类

    QDomDocument类代表了一个XML文件

    QDomDocument类代表整个的XML文件。概念上讲:它是文档树的根节点,并提供了文档数据的基本访问方法。
    由于元素、文本节点、注释、指令执行等等不可能脱离一个文档的上下文,所以文档类也包含了需要用来创建这些对象的工厂方法。被创建的节点对象有一个ownerDocument()函数,它将对象与对象常见的文档上下文环境关联起来。DOM类中最常使用的是QDomNode、QDomDocument、QDomElement和QDomText。
    解析后的XML文件在内部是通过一个对象树来表示的,对象树可以使用各种QDom类进行访问。所有的QDom类只引用内部树上的对象。一旦最后一个DOM树的QDom对象和QDocument本身被删除掉时,DOM树上的所有内部对象会被删除掉。
    元素、文本节点等的创建是通过使用类提供的各种工厂方法完成的。使用QDom类的缺省构造函数只会生成空的对象,这些空的对象不能操作,也不能哈如到文档中。
    QDomDocument类有一些创建文档数据的函数,例如:createElement(),createTextNode(),createComment(),createCDATASection(),
    createProcessingInstruction(),createAttribute(),和createEntityReference().其中一些函数含有支持名字空间的版本,例如:createElementNS()和createAttributeNS().函数createDocumentFragment()用来持有文档的部分内容,这对于处理复杂文档很有用。
    使用setContent设置文档的全部内容。该函数解析传入的XML文档字符串并创建代表文档的DOM树。根节点可以使用documentElement()得到。文档的文本呈现可以使用toString()函数得到。
    可以使用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();
     
    //打印出最外层元素所有直接的子节点的元素名称
    QDomElement docElem = doc.documentElement();
    QDomNode n = docElem.firstChild();
    while (!n.isNull()) {
        QDomElement e = n.toElement(); //将节点转换为元素
        if (!e.isNull()) {
            cout<<qPrintable(e.tagName())<<endl;
        }
        n = n.nextSibling();
    }
     
    // 在文档的结尾添加一个新的元素
    QDomElement elem = doc.createElement("img");
    elem.setAttribute("src", "myimage.png");
    docElem.appendChild(elem);
     
    一旦doc和elem出了范围,整个的代表XML文档的内部树都会删除掉。
     
    使用DOM代码创建一个文档如下:
    QDocument 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();
  • 相关阅读:
    嵌入式为什么要用Linux操作系统
    SPI 协议的理解
    跳转某指定地址、给某绝对地址赋值
    define 宏定义
    笔试--编程题
    spring 技巧集锦
    spring data jpa auditing
    spring security
    Python基础笔记
    调试EF源代码环境配置
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4102501.html
Copyright © 2011-2022 走看看