Qt-QML-C++交互实现⽂件IO系统-后继-读取XML⽂件和创建XML
⽂件
在前⾯两篇中,⼤致完成了⼀个⽂件IO的读和写操作。前⾯两篇⽂章链接
今天这个是,今天主要是写了怎么把配置⽂件写⼊到XML中
上今天的详代码
QJsonObject DLFileIOSystem::DLReadXML()
{
qDebug()<<"XML 读取函数执⾏";
QFile file("./l");        //打开XMl⽂件
if(!file.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox::information(NULL,"Title","Open File False");      //如果打开失败则提⽰
}
QDomDocument doc;              //把⽂件内容写⼊到doc中
doc.setContent(&file);
file.close();              //关闭⽂件
QDomElement root = doc.documentElement();
QDomNode node = root.firstChild();
while (!node.isNull())
{
QDomElement element = Element();
if(!element.isNull())
{
QDomNamedNodeMap list = element.attributes();
for(int i = 0; i&unt(); i++)
{
xmlDate.insert(list.item(i).nodeName(),list.item(i).nodeValue());
qDebug()<<list.item(i).nodeName();
}
}
node = Sibling();
}
return xmlDate;
}
bool DLFileIOSystem::DJWriteXML()
{
qDebug()<<"XML 读取函数执⾏";
QFile file("./l");        //打开XMl⽂件
if(!file.open(QFile::ReadWrite | QFile::Text | QFile::Truncate))            //这⾥需要注意的是,写⼊⽂件的时候需要以覆盖的⽅式
{
QMessageBox::information(NULL,"Title","Open File False");      //如果打开失败则提⽰
}
QTextStream out(&file);
QTextCodec *codec = QTextCodec::codecForName("gbk");
out.setCodec(codec);
QDomDocument doc;              //把⽂件内容写⼊到doc中
doc.setContent(&file);
QDomElement root = ateElement("Root");
QDomElement date = ateElement("XMLDate");
QStringList list = xmlDate.keys();
for(int i = 0; i&unt(); i++)
{
date.setAttribute(list.at(i),xmlDate.value(list.at(i)).toString());
}
root.appendChild(date);
QString strHead("version = \"1.0\" encoding = \"GB2312\"");
doc.ateProcessingInstruction("xml",strHead));
out<&String();
root.save(out,2);
file.close();              //关闭⽂件
QMessageBox::warning(NULL,"提⽰","⽂件写⼊完成");
return true;
}
⼀个读⽂件,⼀个写⽂件
这⾥要参考以为⽜逼⼤⼤的⽂章
剩下的就不⽤在说了,看到前⾯
xml文件怎么打开
这⾥还有⼀个问题了就是,前⼏天没有弄出来的⼀点,这⾥要说明⼀下,
//    property JSON date : FileIOSystem.DLReadFile()
//    property QJSON name: value
property var xmljson: FileIOSystem.DLReadXML()
只有最后⼀种⽅式是正确的,把C++传来的QJsonObject定义成⼀个json属性完了就可以在后⾯的内容中愉快的使⽤了
代码结构