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

XML语言数据读写理解12

首先我们从最底层的Nodets开始写起,然后逐步往上层实现。

在类里面定义一个函数:

QDomElement writeNodets(QDomDocument &doc);

注意参数是QDomDocument,因为你要靠这个参数来创建节点元素。

下面把函数附上:


QDomElement NodeTS::writeNodets(QDomDocument &doc)
{
	QDomElement NormalizedIntensityNode = doc.documentElement();
	NormalizedIntensityNode = doc.createElement("NormalizedIntensity");
	NormalizedIntensityNode.setAttribute("Value", NormalizedIntensity);
	QDomElement OpacityNode = doc.documentElement();
	OpacityNode = doc.createElement("Opacity");
	OpacityNode.setAttribute("Value",Opacity);
	QDomElement EmissionNode = doc.documentElement();
	EmissionNode = doc.createElement("Emission");
	EmissionNode.setAttribute("G", Emission.green());
	EmissionNode.setAttribute("R", Emission.red());
	EmissionNode.setAttribute("B", Emission.blue());
	QDomElement ccNode = doc.documentElement();
	ccNode = doc.createElement("Node");
	ccNode.appendChild(NormalizedIntensityNode);
	ccNode.appendChild(OpacityNode);
	ccNode.appendChild(EmissionNode);
	return ccNode;
}

其实跟之前的文件读写没有什么区别。我们创建每个元素,然后给它添加属性和属性值,然后归到一个节点里,最后作为返回值返回。如果读了博客前几章,一定就对这个很熟悉了。其实最近这几节的内容并没有什么新的知识,只是要求读者更加熟悉xml文件的结构以及对这种结构我们设计自己的类,然后并进行读写。设计的难度主要是在于层层递进性。

我们再进入到上一层,即使用tsfunItem来获取nodets的内容。我们定义一个函数:

QDomElement writeTsfunItem(QDomDocument &doc);
QDomElement TsfunItem::writeTsfunItem(QDomDocument &doc)
{
	QDomElement DensityScaleElement = doc.documentElement();
	DensityScaleElement = doc.createElement("DensityScale");
	DensityScaleElement.setAttribute("Value", DensityScale);
	QDomElement ShadingTypeElement =  doc.documentElement();
	ShadingTypeElement = doc.createElement("ShadingType");
	ShadingTypeElement.setAttribute("Value", ShadingType);
	QDomElement GradientFactorElement = doc.documentElement();
	GradientFactorElement = doc.createElement("GradientFactor");
	GradientFactorElement.setAttribute("Value", GradientFactor);
	
	QDomElement TsNodesElement = doc.documentElement();
	TsNodesElement = doc.createElement("Nodes");

	//DebugWidget::getDebugWidget()->addContents(QString::number(TsNodes.count()));
	for (int i = 0;i < TsNodes.count();i++) {
		TsNodesElement.appendChild(TsNodes[i].writeNodets(doc));
		
	}
	QDomElement itemNodes = doc.documentElement();
	itemNodes = doc.createElement("TsfunItem");
	itemNodes.setAttribute("Name", NameID);
	itemNodes.appendChild(TsNodesElement);
	itemNodes.appendChild(DensityScaleElement);
	itemNodes.appendChild(ShadingTypeElement);
	itemNodes.appendChild(GradientFactorElement);

	return itemNodes;
}

注意到在Nodes节点获取子节点的过程中我们就使用了上面刚设计好的TsNodes[i].writeNodets(doc);函数,在这里还是有很多与之前重复的内容,但是结构貌似越来越复杂了。在我完成整个读写的讲解以后,以及在实现节点某个的添加和删除程序之前,我会把整体的设计思路再给大家讲解一遍,以保证大家能够更好地理解我们的设计思路。下一节我们完成整个写文件的程序。

 

相关文章:

  • XML语言数据读写理解13
  • XML语言数据读写理解14
  • XML语言数据读写理解15
  • XML语言数据读写理解16
  • QT图形显示和处理1
  • QT图形显示和处理2 坐标系统(重点)
  • QT图形显示和处理3 坐标系统(重点)
  • QT图形显示和处理4
  • QT图形显示和处理5
  • QT图形显示和处理6
  • QT图形显示和处理7
  • QT图形显示和处理8
  • QT传输函数控件设计1 引子
  • QT传输函数控件设计2 体渲染和VTK
  • QT传输函数控件设计3 QVTKWidget和QT图形界面的融合
  • 时间复杂度分析经典问题——最大子序列和
  • Docker入门(二) - Dockerfile
  • download使用浅析
  • iOS 系统授权开发
  • Java程序员幽默爆笑锦集
  • java中具有继承关系的类及其对象初始化顺序
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Python_网络编程
  • tweak 支持第三方库
  • ucore操作系统实验笔记 - 重新理解中断
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从伪并行的 Python 多线程说起
  • 坑!为什么View.startAnimation不起作用?
  • 聊聊flink的TableFactory
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端面试总结(at, md)
  • 区块链技术特点之去中心化特性
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # Maven错误Error executing Maven
  • #include
  • #传输# #传输数据判断#
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (7)STL算法之交换赋值
  • (C++)八皇后问题
  • (pytorch进阶之路)扩散概率模型
  • (rabbitmq的高级特性)消息可靠性
  • (编译到47%失败)to be deleted
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三分钟)速览传统边缘检测算子
  • (四)模仿学习-完成后台管理页面查询
  • (学习日记)2024.01.19
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)负载均衡,回话保持,cookie
  • .java 9 找不到符号_java找不到符号
  • .Net Core和.Net Standard直观理解