写数据:
一 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();