qt读写xml文件
来源:互联网 发布:linkdeque java 编辑:程序博客网 时间:2024/05/22 15:35
1、DOM方式
写xml文件,以QDomText方式写,代码如下
QFile file("d:/test.txt");file.open(QIODevice::WriteOnly);QDomDocument doc;QDomProcessingInstruction instruction;instruction = doc.createProcessingInstruction("xml", "version = \'1.0\'");doc.appendChild(instruction);QDomElement root = doc.createElement("html");doc.appendChild(root);QDomElement data;QDomElement tmp;QDomText text;data = doc.createElement("title");text = doc.createTextNode(QStringLiteral("多看"));data.appendChild(text);root.appendChild(data);tmp = doc.createElement("book");text = doc.createTextNode(QStringLiteral("小说"));tmp.appendChild(text);root.appendChild(tmp);QTextStream out(&file);doc.save(out, 4);file.close();
读代码为
QFile file("d:/test.txt");file.open(QIODevice::ReadOnly);QDomDocument doc;doc.setContent(&file);QDomElement root = doc.documentElement();for (QDomNode node = root.firstChild(); !node.isNull(); node = node.nextSibling()) {QDomElement element = node.toElement();QString tagName = element.tagName();if (tagName == "title") {qDebug() << element.text();} else if (tagName == "book") {qDebug() << element.text();}}file.close();
以QDomAttr方式写:
QFile file("d:/test.txt");file.open(QIODevice::WriteOnly);QDomDocument doc;QDomProcessingInstruction instruction;instruction = doc.createProcessingInstruction("xml", "version = \'1.0\'");doc.appendChild(instruction);QDomElement root = doc.createElement("html");doc.appendChild(root);QDomAttr data;QDomAttr tmp;data = doc.createAttribute("title");data.setValue(QStringLiteral("多看"));root.setAttributeNode(data);tmp = doc.createAttribute("book");tmp.setValue(QStringLiteral("小说"));root.setAttributeNode(tmp);QTextStream out(&file);doc.save(out, 4);file.close();
读QDomAttr
QFile file("d:/test.txt");file.open(QIODevice::ReadOnly);QDomDocument doc;doc.setContent(&file);QDomElement root = doc.documentElement();qDebug() << root.attribute("title");qDebug() << root.attribute("book");file.close();
2、用QXmlStreamReader和QXmlStreamWriter
写文件,设置相关联的文件,用writeStartDocument来开始,用writeEndDocument来结束
用writeStartElement和writeEndElement来表示元素的开始和结束,需要成对使用
<name>a</name>形式,用writeTextElement
<name a=""/>形式,用writeAttribute
QFile file("test.txt"); file.open(QIODevice::writeOnly);QXmlStreamWriter xmlstreamwriter(&file);xmlstreamwriter.setAutoFormatting(true);xmlstreamwriter.writeStartDocument();xmlstreamwriter.writeStartElement("xml");xmlstreamwriter.writeStartElement("round");xmlstreamwriter.writeAttribute("id", mRoundId);xmlstreamwriter.writeAttribute("tableid", mTableId);//player1xmlstreamwriter.writeStartElement("player1");xmlstreamwriter.writeAttribute("framescore", mPlayer1Frame);xmlstreamwriter.writeAttribute("points", mPlayer1Point);xmlstreamwriter.writeAttribute("break", mPlayer1ContinuePoint); xmlstreamwriter.writeCharacters("Hello World"); //添加内容xmlstreamwriter.writeEndElement();//player2xmlstreamwriter.writeStartElement("player2");xmlstreamwriter.writeAttribute("framescore", mPlayer2Frame);xmlstreamwriter.writeAttribute("points", mPlayer2Point);xmlstreamwriter.writeAttribute("break", mPlayer2ContinuePoint);xmlstreamwriter.writeEndElement();xmlstreamwriter.writeEndElement();xmlstreamwriter.writeEndElement();xmlstreamwriter.writeEndDocument(); file.close();结果如下:
<?xml version="1.0" encoding="UTF-8"?><xml> <round id="" tableid="1"> <player1 framescore="" points="" break="">Hello World</player1> <player2 framescore="" points="" break=""/> </round></xml>
读文件时,用isStartElement来判断标志的起始
<name a=""></name>形式,用attributes().value("a")
<name>a</name>形式,用readElementText
在读取时,是通过循环,while (!reader.atEnd()) {reader.readNext();.....;}
QFile file("test.txt");file.open(QIODevice::ReadOnly);QXmlStreamReader reader(&file);while (!reader.atEnd()) {reader.readNext();if (reader.isStartElement()) {if (reader.name() == "round") {qDebug() << reader.attributes().value("id").toString();qDebug() << reader.attributes().value("tableid").toString();} else if (reader.name() == "player1") {qDebug() << reader.attributes().value("framescore").toString();qDebug() << reader.attributes().value("points").toString();qDebug() << reader.attributes().value("break").toString();qDebug() << reader.readElementText();} else if (reader.name() == "player2") {qDebug() << reader.attributes().value("framescore").toString();qDebug() << reader.attributes().value("points").toString();qDebug() << reader.attributes().value("break").toString();qDebug() << reader.readElementText();}}}file.close();结果如下
"" "1" "" "" "" "Hello World" "" "" "" ""
0 0
- Qt 读写XML文件
- QT 读写Xml文件
- Qt读写XML文件
- qt读写xml文件
- Qt 读写xml文件
- QT XML文件的读写
- Qt读写xml文件实例
- QT QDomDocument 读写XML文件
- QT读写xml文件示例
- Qt中读写xml文件
- Qt DomDoucment方式读写 xml文件
- Qt使用流方式 读写xml文件
- QT DOM的方式读写Xml文件
- Qt:QXMLStreamReader、QXMLStreamWriter,读写XML文件实例
- Qt:用Dom方式读写xml文件
- QT读写XML文件之DOM方式解析XML
- Qt Write and Read XML File 读写XML文件
- qt DOM xml 读写
- Android中Context
- AsyncTask 的介绍
- 跟鸟哥学Linux之——bash shell 总结
- Java中的try-catch-finally
- ZOJ 3640 Help Me Escape(概率dp+记忆化)
- qt读写xml文件
- java实现单链表
- php设计模式之———单例模式
- 欧几里德算法
- Microsoft Visual C++ Runtime Library_Debug Assertion Failed!
- 汉诺塔 Java
- Tesseract引擎 验证码
- Java1.8环境变量配置
- Android开发小技巧