QXmlStreamReader 类
是一个xml解析器,用于读取xml文件,相对的是QXmlStreamWriter类,是用于写入xml文件是一个快速的解析器,可以通过流api实现读取规范格式的xml文件;qt也有另一种解析器。QXmlSimpleReader。但是相比较,QXmlStreamReader和QXmlStreamWriter更高效,更简单。在使用见 QDomDocument的的应用程序中,更方便使用。
当读取器报告开始元素时,属性由attributes() 中的QXmlStreamReader返回。该类还可以与QXmlStreamWriter 一起用作writeAttributes()的参数。便利函数value () 遍历向量并返回给定 namespaceUri 的属性值和属性名称。可以使用append ()添加新属性。
保存新的xml文件
遍历旧的xml文件,按照格式输出的新的xml文件
void SaveNewFile(QString srcFileName,QString tarFileName){ //*QFile类QT的文件的输入输出设备类。用来读写二进制文件与文本文件的输入输出设备。 QFile srcFile(srcFileName); srcFile.open(QFile::ReadOnly | QFile::Text); QFile tarFile(tarFileName); tarFile.open(QFile::WriteOnly | QFile::Text | QIODevice::Truncate); //创建QXmlStreamReader QXmlStreamReader reader(&srcFile); QXmlStreamWriter writer(&tarFile); writer.setAutoFormatting(true); //;//自动设置格式,这样会自动换行和添加缩进 writer.writeStartDocument();//写入开始记号 while (!reader.atEnd()) { reader.readNext(); ## if(reader.isStartElement()) //测试当前内容节点是否是开始标记。 { QXmlStreamAttributes attr = reader.attributes(); qDebug()<<reader.name().toString(); writer.writeStartElement(reader.name().toString()); if(attr.size()>0) { writer.writeAttributes(attr); } } if(reader.isCharacters()) { //qDebug()<<reader.text().toString(); writer.writeCharacters(reader.text().toString()); } if(reader.isEndElement()) { writer.writeEndElement(); } } writer.writeEndDocument(); //对应于writeStartDocument(),当调用这个函数时,即表示文档信息写入完毕。 srcFile.close(); tarFile.close(); } void MainWindow::on_pushButton_2_clicked() { SaveNewFile("MapConfig.xml","testsave.xml"); }