QT 创建编辑xml文件

//写xml的2个方式

**方式一		QXmlStreamWriter**

QFile file("C:/Users/Administrator/Desktop/test.xml");
if (!file.open(QIODevice::WriteOnly))
	return;
QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true);							//设置自动格式,自动换行和缩进
stream.writeStartDocument();								//开始编写以xml版本号开头的文件
stream.writeStartElement("bookmark");						//创建开始元素标签并命名
stream.writeAttribute("href", "http://qt-project.org/");	//编写该元素属性
/*内容*/		//*这里写该元素内容,可以是新元素,也可以是文字元素,空白元素 *//
	stream.writeTextElement("title", "Qt Project");	
	stream.writeStartElement("platform");
		stream.writeStartElement("win");
			stream.writeTextElement("name", "window10");
			stream.writeTextElement("name1", "window11");
		stream.writeEndElement();
		stream.writeStartElement("mac");
			stream.writeComment("hello mac");				//设置注释
			stream.writeTextElement("name", "mac11.0");
		stream.writeEndElement();
	stream.writeEndElement();
stream.writeEndElement();									//结束对应元素标签
stream.writeEndDocument();								//结束xml文档的编写
file.close();
**/*输出*/**
<?xml version="1.0" encoding="UTF-8"?>
<bookmark href="http://qt-project.org/">
    <title>Qt Project</title>
    <platform>
        <win>
            <name>window10</name>
            <name1>window11</name1>
        </win>
        <mac>
            <!--hello mac-->
            <name>mac11.0</name>
        </mac>
    </platform>
</bookmark>
**方式二	QDomDocument**

QFile file("C:/Users/Administrator/Desktop/test1.xml");
if (!file.open(QIODevice::WriteOnly))
	return;
QDomDocument Doc;
Doc.setContent(&file);

QDomProcessingInstruction xmlInstruction = Doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"");
Doc.appendChild(xmlInstruction);						//为DOM结构添加元素
QDomElement root = Doc.createElement("MYML");			//创建标签盒子
root.setAttribute("platform", "none");					//设置盒子属性
Doc.appendChild(root);

QDomElement tag = Doc.createElement("Title");				//创建标签盒子
QDomText t = Doc.createTextNode("Qt Project");			//写入文字
QDomElement platform = Doc.createElement("platform");
tag.appendChild(t);
root.appendChild(tag);
root.appendChild(platform);

QDomElement win = Doc.createElement("win");
QDomElement mac = Doc.createElement("mac");
platform.appendChild(win);
platform.appendChild(mac);

QDomElement name1 = Doc.createElement("name");
QDomText value1 = Doc.createTextNode("window10");
win.appendChild(name1);
name1.appendChild(value1);

QDomElement name2 = Doc.createElement("name");
mac.appendChild(name2);
QDomText value2 = Doc.createTextNode("mac11.0");
name2.appendChild(value2);

QTextStream out_stream(&file);
Doc.save(out_stream, 4); //缩进4格
file.close();
**/*输出*/**
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MYML platform="none">
    <Title>Qt Project</Title>
    <platform>
        <win>
            <name>window10</name>
        </win>
        <mac>
            <name>mac11.0</name>
        </mac>
    </platform>
</MYML>

读xml
方式一接口

通过setDevice()设置好要处理的XML文件
reader.setDevice(&file);

通过readNext()挨个读入节点,
通过isStartElement()和isEndElement()判断是节点的开始和结束.
通过name()得到当前节点名字
通过readElementText()访问当前节点的内容
通过attributes()获取含有属性的节点的属性

(还没完善代码模块)
while (!reader.atEnd())
{
if (reader.isStartElement())
{
QTreeWidgetItem *item = new QTreeWidgetItem(parent);
item->setText(0, reader.name().toUtf8());
parent->addChild(item);
reader.readNext();
while (!reader.isStartElement()&&!reader.isEndElement())
{
reader.readNext();
}
if (reader.isStartElement())
{
readallelement(item);
}
}
else
{
reader.readNext();
}

方式二:

void xmltest::parseelement(const QDomElement &element, QTreeWidgetItem* parent)
{
QDomNode child = element.firstChild();
while (!child.isNull())
{
QDomElement e = child.toElement();
if (!e.isNull())
{
QTreeWidgetItem *item = new QTreeWidgetItem(parent);
item->setText(0, e.tagName());
parseelement(e,item);
}
child = child.nextSibling();
}
}

学习在Qt中处理XML文件可以按照以下步骤进行: 1. 了解XML基础知识:学习XML的基本概念、语法和结构,了解XML的用途和优势。掌握XML的标签、元素、属性和命名空间等基本概念。 2. 学习Qt中的XML模块:Qt提供了Qt XML模块,用于处理XML文件。学习Qt XML模块的相关类和函数,包括QDomDocument、QDomElement、QDomNode等。 3. 解析XML文件:学习使用Qt XML模块解析XML文件。可以使用QDomDocument类来读取和解析XML文件,获取XML文档的根节点,并通过遍历节点和获取节点属性等方式来访问XML文件中的数据。 4. 创建编辑XML文件:学习使用Qt XML模块创建编辑XML文件。可以使用QDomDocument类创建一个新的XML文档,并使用QDomElement和QDomNode等类来创建元素、属性和子节点,然后将其保存为XML文件。 5. 数据操作:学习如何在Qt中处理XML文件中的数据。可以使用Qt提供的API来读取、修改和删除XML文件中的数据,包括添加子节点、修改属性值、删除节点等操作。 6. 错误处理:学习如何处理XML文件解析过程中可能出现的错误。Qt提供了错误处理机制,可以捕获和处理解析XML文件时可能出现的错误,如XML语法错误、节点不存在等。 7. 实践项目:通过实践项目来巩固所学知识。可以尝试编写一个简单的程序,使用Qt XML模块读取和解析XML文件,并对文件中的数据进行操作和展示。 此外,Qt官方文档中提供了详细的XML模块的使用说明和示例代码,可以参考官方文档来学习和理解更多关于在Qt中处理XML文件的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值