QXmlStreamWriter QXmlStreamReader

写数据:

一 API介绍

writeStartDocument():写文档头,作用类似于创建一个xml文档,并在文档开头部分写入版本信息和编码信息,一般为: <?xml version="1.0" encoding="UTF-8"?>

writer.writeEndDocument():对应于writeStartDocument(),当调用这个函数时,即表示文档信息写入完毕

writeStartElement():写入开始记号,即<>

writeEndElement():写入结束记号,即</>

writeTextElement():写入文本信息记号,如短信的发送人、短信内容、短信时间等

	QString fn = this->getProjectPath() + "project_parameter.xml";
	QFile f(fn);
	if(f.open(QIODevice::WriteOnly)){
		QXmlStreamWriter out(&f);
		out.setAutoFormatting(true);
		out.writeStartElement("PROJECT_PARAMETERS");
		out.writeStartElement("PROJECT_START");
		out.writeAttribute("Label",this->getProjectPath());
		out.writeTextElement("projectName", projectName_);
		out.writeTextElement("projectRootDir", projectRoot_);
		out.writeTextElement("dataRootDir", dataRoot_);
		out.writeTextElement("nasDiskEnabled", QString::number(mySystemParameter.isNasEnabled()));
		out.writeTextElement("nasDiskDir", mySystemParameter.getNASDirectory());
		//out.writeTextElement("dmcHostIP", mySystemParameter.getDMCHostAddress().toString());
		//out.writeTextElement("dmcHostPort", QString::number(mySystemParameter.getDMCPortNumber()));
		//out.writeTextElement("qcHostIP", mySystemParameter.getSeisQCHostAddress().toString());
		//out.writeTextElement("qcHostPort", QString::number(mySystemParameter.getSeisQCPortNumber()));
		out.writeTextElement("plotterType", QString::number(mySystemParameter.getPlotterType()));
		out.writeTextElement("taperDType", QString::number(mySystemParameter.getTapeDriverType()));
		out.writeTextElement("tapeRecMode", QString::number(mySystemParameter.getTapeRecordingMode()));
		out.writeTextElement("filePerTape", QString::number(mySystemParameter.getFilePerTape()));
		out.writeTextElement("TapeDrInUse", QString::number(mySystemParameter.getTapeDriverInUse()));
		out.writeTextElement("dccOpMode", QString::number(dccOperationMode_));
        out.writeTextElement("ProjectId", QString::number(myProjectGeneralInfo.getProjectId()));
		out.writeTextElement("Client", myProjectGeneralInfo.getClient());
		out.writeTextElement("Crew", myProjectGeneralInfo.getCrewName());
		out.writeTextElement("Proj_Desc", myProjectGeneralInfo.getProjectDescription());
		out.writeTextElement("Geoph_Contractor", myProjectGeneralInfo.getGeophysicalContractorName());
		out.writeTextElement("Procs_Contractor", myProjectGeneralInfo.getProcessingContractorName());
		out.writeTextElement("Posn_Contractor", myProjectGeneralInfo.getPositioningContractorName());
		out.writeTextElement("Seismic_System",myProjectGeneralInfo.getSeismicSystemName());
		out.writeTextElement("Grid_Type", QString::number(myProjectGeneralInfo.getGridType()));
		out.writeTextElement("WRT_GWT", QString::number(myProjectGeneralInfo.getWrtGMT()));
		out.writeTextElement("Grid_Dist", QString::number(myProjectGeneralInfo.getGridDistance()));
		out.writeTextElement("Start_Date", myProjectGeneralInfo.getProjectStartDate().toString(DEPLOY_DATETIME_FORMAT_STR));
		out.writeTextElement("End_Date", myProjectGeneralInfo.getProjectEndDate().toString(DEPLOY_DATETIME_FORMAT_STR));
		out.writeTextElement("ProjCreateDate", myProjectGeneralInfo.getProjectCreationDate().toString(DEPLOY_DATETIME_FORMAT_STR));
		out.writeTextElement("Start_File", QString::number(myProjectGeneralInfo.getStartFileNumber()));
		out.writeTextElement("Start_Reel", QString::number(myProjectGeneralInfo.getStartReelNumber()));
		out.writeTextElement("Field_recNumber", QString::number(myProjectGeneralInfo.getFieldRecordNumber()));
		out.writeTextElement("Sample_Rate_Type", QString::number(myProjectGeneralInfo.getSampleRateType()));
		out.writeTextElement("LowCut_Type", QString::number(myProjectGeneralInfo.getLowcutType()));
		out.writeTextElement("Filter_Type", QString::number(myProjectGeneralInfo.getFilterType()));
		out.writeEndElement();
		out.writeEndElement();
		f.close();
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
读数据:

一 API介绍

    readNext():从xml输入流中读取下一个记号

    name():记号的名称,即<名称></名称>

    isStartElement():判断当前已读取的记号是否为开始元素,开始元素即<>

    isEndElement():判断当前已读取的记号是否为结束元素,结束元素即</>

    readElementText():读取当前记号对应的文本值,<>文本值</>

    atEnd():判断是否为文件结尾


if(!path.endsWith("/") && !path.endsWith(QDir::separator())){
		path += "/";
	}

	QString fn = path + "project_parameter.xml";
	QFile f(fn);
	bool ok = f.open(QIODevice::ReadOnly);
	if(ok){
		QString proj, projDir, dummy;
		//QHostAddress dmshost, seisqchost;
		//qint16 dmcport, seisport;
		QXmlStreamReader xml(&f);
		qint32 cnt = 1;
		while(!xml.atEnd()) {
			if(xml.readNext() == QXmlStreamReader::Invalid){
				break;
			}
			if(xml.isEndElement() && (xml.name() == "PROJECT_PARAMETERS" || xml.name() == "PROJECT_START")){
				break;
			}
			if (xml.isStartElement()){
				if( xml.name() == "projectName"){
					proj = xml.readElementText();
				}else if( xml.name() == "projectRootDir"){
					projDir = xml.readElementText();
				}else if( xml.name() == "dataRootDir"){
					dataRoot_ = xml.readElementText();
				}else if( xml.name() == "nasDiskEnabled"){
					mySystemParameter.setEnableNAS(xml.readElementText().toInt());
				}else if( xml.name() == "nasDiskDir"){
					setNasDiskDirectory(xml.readElementText());
				}else if( xml.name() == "dmcHostIP"){
					//dmshost = QHostAddress(xml.readElementText());
					//setDmcHost(xml.readElementText());
				}else if( xml.name() == "dmcHostPort"){
					//dmcport = xml.readElementText().toInt();
					//setDmcPort(xml.readElementText().toInt());
				}else if( xml.name() == "qcHostIP"){
					//seisqchost = QHostAddress(xml.readElementText());
					//mySystemParameter.setSeisQCHostAddress(QHostAddress(xml.readElementText()));
				}else if( xml.name() == "qcHostPort"){
					//seisport = xml.readElementText().toInt();
					//mySystemParameter.setSeisQCPortNumber(xml.readElementText().toInt());
				}else if( xml.name() == "plotterType"){
					setPlotterModelType(xml.readElementText().toInt());
				}else if( xml.name() == "taperDType"){
					setTapeDriverType(xml.readElementText().toInt());
				}else if( xml.name() == "tapeRecMode"){
					setTapeRecMode(xml.readElementText().toInt());
				}else if( xml.name() == "filePerTape"){
					setNumFilePerTape(xml.readElementText().toInt());
				}else if( xml.name() == "TapeDrInUse"){
					setNumTapeInUse(xml.readElementText().toInt());
				}else if( xml.name() == "dccOpMode"){
					dccOperationMode_ = xml.readElementText().toInt();
                }else if( xml.name() == "ProjectId"){
                    myProjectGeneralInfo.setProjectId(xml.readElementText().toUInt());
				}else if( xml.name() == "Client"){
					dummy = xml.readElementText();;
					myProjectGeneralInfo.setClientName(dummy);
				}else if (xml.name() == "Crew"){
					dummy = xml.readElementText();
					myProjectGeneralInfo.setCrewName(dummy);
				}else if(xml.name() == "Proj_Desc"){
					dummy = xml.readElementText();
					myProjectGeneralInfo.setProjectDescription(dummy);
				}else if(xml.name() == "Geoph_Contractor"){
					dummy = xml.readElementText();
					myProjectGeneralInfo.setGeophysicalContractorName(dummy);
				}else if(xml.name() == "Procs_Contractor"){
					dummy = xml.readElementText();
					myProjectGeneralInfo.setProcessingContractorName(dummy);
				}else if(xml.name() == "Posn_Contractor"){
					dummy = xml.readElementText();
					myProjectGeneralInfo.setPositioningContractorName(dummy);
				}else if(xml.name() == "Seismic_System"){
					dummy = xml.readElementText();
					myProjectGeneralInfo.setSeismicSystemName(dummy);
				}else if(xml.name() == "Grid_Type"){
					myProjectGeneralInfo.setGridType(xml.readElementText().toInt());	
				}else if(xml.name() == "WRT_GWT"){
					myProjectGeneralInfo.setWrtGMT(xml.readElementText().toInt());
				}else if(xml.name() == "Grid_Dist"){
					myProjectGeneralInfo.setGridDistance( xml.readElementText().toInt());
				}else if(xml.name() == "Start_Date"){
					QDateTime d = QDateTime::fromString(xml.readElementText(),DEPLOY_DATETIME_FORMAT_STR);
					myProjectGeneralInfo.setProjectStartDate(d);
				}else if(xml.name() == "End_Date"){
					QDateTime d = QDateTime::fromString(xml.readElementText(),DEPLOY_DATETIME_FORMAT_STR);
					myProjectGeneralInfo.setProjectEndDate(d);
				}else if(xml.name() == "ProjCreateDate"){
					QDateTime d = QDateTime::fromString(xml.readElementText(),DEPLOY_DATETIME_FORMAT_STR);
					myProjectGeneralInfo.setProjectCreationDate(d);
				}else if(xml.name() == "Start_File"){
					myProjectGeneralInfo.setStartFileNumber(xml.readElementText().toInt());
				}else if(xml.name() == "Start_Reel"){
					myProjectGeneralInfo.setStartReelNumber(xml.readElementText().toInt());
				}else if(xml.name() == "Field_recNumber"){
					myProjectGeneralInfo.setFieldRecordNumber(xml.readElementText().toInt());
				}else if(xml.name() == "Sample_Rate_Type"){
					myProjectGeneralInfo.setSampleRateType(xml.readElementText().toInt());
				}else if(xml.name() == "LowCut_Type"){
					myProjectGeneralInfo.setLowcutType(xml.readElementText().toInt());
				}else if(xml.name() == "Filter_Type"){
					myProjectGeneralInfo.setFilterType(xml.readElementText().toInt());
				}
			}
		}//while
		f.close();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值