XML语言数据读写理解2

185 阅读2分钟

首先我们需要了解一下对于计算机来说,XML语言到底是怎么构成的。一般来说,XML语言的第一行会是这种形式:

    这表示xml的版本和它的编码格式,一般就是GB2312或者UTF-8,这个一般我们不需要自己去修改,所以我们只需要读出来就好了。这里先贴一段程序,然后详细介绍一下,这一节我们就以这个程序为模板了:

											xml:firstChild.nodeName();
											version encoding:firstChild.nodeValue();
											--> 

    怎么使用QT类QDomDocument以及QDomElement将这个XML文件里面的东西读出来呢?首先我们先尝试把第一行读出来:

    

QDomNode firstChild = xml.firstChild(); dw->addContents(firstChild.nodeName()); dw->addContents(firstChild.nodeValue()); //dw->addContents(QString) 是自己设计的用来弹出一个窗口显示数据的程序,你也可以用qDebug来显示数据。每次输出都换行。   输出结果为:

xml version='1.0' encoding='UTF-8'   但是如果去掉下面这些内容:

											xml:firstChild.nodeName();
											version encoding:firstChild.nodeValue();
											--> 

    再执行同样的程序,就会打印:

Mode     也就是说把底下的mode给打印出来了。所以我们其实可以加个判断:

QDomNode firstChild = xml.firstChild();
if (firstChild.nodeName()=="xml") {
	dw->addContents(firstChild.nodeName());
	dw->addContents(firstChild.nodeValue());
}
else {
	dw->addContents("No version , No Format");
}

    表示判断第一行是不是关于自定义的xml文件信息,如果是就打印出来,如果不是就输出来提醒一下。其实这个信息在很多时候用处也不大,所以这里就先给忽略了。

    之后,我们要根据自己xml文件的格式来解析里面的各个节点和子节点。其实可以笼统地认为xml文件就是由很多节点和子节点构成的,其中子节点作为节点也包含一些子节点。为了让我们的理解更全面,我们下一节会写一个复杂的xml文件然后从头开始解析。