当前位置: 首页 > news >正文

XML语言数据读写理解2

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

<?xml version="1.0" encoding="UTF-8"?>

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

<?xml version="1.0" encoding="UTF-8"?>         <!--  QDomNode firstChild = doc.firstChild(); 
												xml:firstChild.nodeName();
												version encoding:firstChild.nodeValue();
												--> 
<!DOCTYPE Appearance>
<Mode>     <!-- QDomElement rootElement = doc.documentElement() -->
    <!-- QDomNode childNode = rootElement.firstChild() 判断是不是元素,如果是,就转换为元素值 -->
	<A id = "1">
		<T param1="42323" param2="2356" param3= "3d2"/>
		<R param1="6256" param2="23562" param3= "f232f"/>
	</A> <!-- childNode.nextSibling() 寻找下一个兄弟节点 -->
	<A id = "2">
		<R param1="433f3f" param2="frsfs" param3= "f2g34g"/>
		<R param1="243442" param2="324232" param3= "j665"/>
	</A>
	<B id = "3">
		<B param1="sdfsdfs" param2="fef2" param3= "43tg"/>
		<W param1="123123" param2="32ff" param3= "efea"/>
	</B>
	<C id = "4">
		<B param1="143221" param2="kyr5y" param3= "fwf"/>
		<B param1="124531" param2="4g4gs" param3= "4w4g"/>
	</C>
	<D id = "5">
		<B param1="13231233" param2="3qfgg" param3= "44444tw"/>
		<B param1="45435" param2="aacevev" param3= "dghh"/>
	</D>
</Mode>

    怎么使用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 version="1.0" encoding="UTF-8"?>         <!--  QDomNode firstChild = doc.firstChild(); 
												xml:firstChild.nodeName();
												version encoding:firstChild.nodeValue();
												--> 
<!DOCTYPE Appearance>

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

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文件然后从头开始解析。

相关文章:

  • XML语言数据读写理解3
  • XML语言数据读写理解4
  • XML语言数据读写理解5
  • XML语言数据读写理解6
  • XML语言数据读写理解7
  • XML语言数据读写理解8
  • XML语言数据读写理解9
  • XML语言数据读写理解10
  • 简易的QT输出调试器
  • 简易的QT输出调试器2
  • XML语言数据读写理解11
  • XML语言数据读写理解12
  • XML语言数据读写理解13
  • XML语言数据读写理解14
  • XML语言数据读写理解15
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 「译」Node.js Streams 基础
  • Java,console输出实时的转向GUI textbox
  • js 实现textarea输入字数提示
  • laravel 用artisan创建自己的模板
  • laravel5.5 视图共享数据
  • magento 货币换算
  • php中curl和soap方式请求服务超时问题
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 模型微调
  • 如何用vue打造一个移动端音乐播放器
  • 使用Gradle第一次构建Java程序
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 小程序 setData 学问多
  • 新手搭建网站的主要流程
  • 一些关于Rust在2019年的思考
  • 怎样选择前端框架
  • 最简单的无缝轮播
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #{}和${}的区别是什么 -- java面试
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (八十八)VFL语言初步 - 实现布局
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .php文件都打不开,打不开php文件怎么办
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...