QDomDocument-创建读写xml文档

QDomDocument类表示整个XML文档。从概念上讲,它是文档树的根,并提供对文档数据的主要访问。由于元素、文本节点、注释、处理指令等不能存在于文档的上下文之外,因此文档类还包含创建这些对象所需的工厂函数。创建的节点对象有一个ownerDocument()函数,该函数将节点对象与创建节点的上下文中的文档关联起来。最常使用的DOM类是QDomNodeQDomDocumentQDomElementQDomText

文档的整个内容是用setContent()设置的。这个函数解析作为XML文档传递的字符串,并创建表示该文档的DOM树。根元素可以使用documentElement()。文档的文本表示可以使用toString()获得。

注意:如果XML文档很大,DOM树最终可能会保留大量内存。对于这样的文档,QXmlStreamReaderQXmlQuery类可能是更好的解决方案。

Qt的示例:

解析doc:

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:

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();

MyTest:解析xml文件,遍历xml所有节点

void readDom(QString& filename){

QDomDocument doc("mydocument");

QFile file(filename);

if (!file.open(QIODevice::ReadOnly))

return;

if (!doc.setContent(&file)) {

file.close();

return;

}

file.close();

//文档根节点

QDomElement docElem = doc.documentElement();

//第一个子元素

QDomElement n = docElem.firstChildElement();

readDomNode(n);

}

void readDomNode(QDomNode& domNode)

{

QDomElement e = docElem.firstChildElement();

While(!e.isNull()){

readDomNode(n);

e = e.nextSiblingElement();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于 Qt 的问题。QDomDocument 是 Qt 中用于 XML 文件的类。其主要功能是将 XML 文件解析成 DOM 树表示,从而可以方便地进行修改、查询和输出操作。 在 Qt 中使用 QDomDocument XML 文件的步骤如下: 1. 创建 QDomDocument 对象,并设置 XML 文件的版本、编码和根节点。 2. 通过 QDomDocument 对象的 createElement() 方法创建节点,并通过 appendChild() 方法将其添加到 DOM 树中。 3. 通过 QDomDocument 对象的 createTextNode() 方法创建文本节点,并通过 appendChild() 方法将其添加到 DOM 树中。 4. 通过 QDomDocument 对象的 toByteArray() 方法将 DOM 树输出到字节数组中,或通过 save() 方法将 DOM 树保存到 XML 文件中。 以下是一个简单的示例代码,演示了如何使用 QDomDocument XML 文件: ```cpp #include <QFile> #include <QDomDocument> int main() { // 创建 QDomDocument 对象 QDomDocument doc; // 设置 XML 文件的版本和编码 doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"")); // 创建根节点 QDomElement root = doc.createElement("root"); doc.appendChild(root); // 创建子节点 QDomElement child = doc.createElement("child"); root.appendChild(child); // 创建文本节点 QDomText text = doc.createTextNode("Hello, world!"); child.appendChild(text); // 将 DOM 树输出到字节数组中 QByteArray xml = doc.toByteArray(); // 将 DOM 树保存到 XML 文件中 QFile file("test.xml"); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream out(&file); out << doc.toString(); file.close(); } return 0; } ``` 这段代码创建了一个名为 test.xmlXML 文件,其内容为: ```xml <?xml version="1.0" encoding="UTF-8"?> <root> <child>Hello, world!</child> </root> ``` 希望这个示例代码可以帮助你了解如何使用 QDomDocument 在 Qt 中 XML 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值