//Dom方式更改节点信息 bool XmlTools::SetValue(QString name,float exposure,float gain,float gamma,int brightness) { #if 0 QFile file("fileName.xml"); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) return -2; QTextStream out(&file); QDomDocument doc; QDomText text; QDomElement element; QDomAttr attr; QDomProcessingInstruction instruction; instruction = doc.createProcessingInstruction( "xml", "version = \'1.0\' encoding=\'UTF-8\'" ); doc.appendChild( instruction ); QDomElement root = doc.createElement( "COMMAND" ); doc.appendChild(root); element = doc.createElement( "OBJECT" ); text = doc.createTextNode( "USER" ); element.appendChild(text); root.appendChild(element); element = doc.createElement( "ACTION" ); text = doc.createTextNode( "LOGIN" ); element.appendChild(text); root.appendChild(element); element = doc.createElement( "DATA" ); root.appendChild(element); QDomElement userElement = doc.createElement( "USERINFO" ); attr = doc.createAttribute( "NAME" ); attr.setValue("root"); userElement.setAttributeNode(attr); attr = doc.createAttribute( "PASSWORD" ); attr.setValue("123456"); userElement.setAttributeNode(attr); element.appendChild(userElement); doc.save(out, 4); //each line space of file is 4 return 0; #else if QDomDocument doc; QFile file("config/3vcam.xml"); QString error = ""; int row = 0, column = 0; if (!file.open(QIODevice::ReadOnly)) return -2; if(!doc.setContent(&file, false, &error, &row, &column)) { qDebug() << "parse file failed:" << row << "---" << column <<":" <<error; file.close(); return -1; } file.close(); QDomElement root = doc.documentElement(); QDomNode node = root.firstChild(); while(!node.isNull()) { QDomElement element = node.toElement(); // try to convert the node to an element. if(!element.isNull()) { qDebug()<<element.tagName() << ":" << element.text(); printf("element.tagName:%s,element.text:%s\n",element.tagName().toLatin1().data(),element.text().toLatin1().data()); fflush(stdout); if (element.hasAttribute("id")) { printf("---id:%s---\n",element.attributeNode("id").value().toLatin1().data()); } QDomNode nodeson = element.firstChild(); bool bNeedUpdate = false; while(!nodeson.isNull()) { QDomElement elementson = nodeson.toElement(); if(!elementson.isNull()) { if (elementson.tagName() == "name" && name == elementson.text()) { printf("---name:%s---\n",elementson.text().toLatin1().data()); bNeedUpdate = true; } else if(elementson.tagName() == "exposure" && bNeedUpdate) { printf("---exposure:%s---\n",elementson.text().toLatin1().data()); nodeson.firstChild().setNodeValue(QString::number(exposure)); } else if(elementson.tagName() == "gain" && bNeedUpdate) { printf("---gain:%s---\n",elementson.text().toLatin1().data()); nodeson.firstChild().setNodeValue(QString::number(gain)); } else if(elementson.tagName() == "gamma" && bNeedUpdate) { printf("---gamma:%s---\n",elementson.text().toLatin1().data()); nodeson.firstChild().setNodeValue(QString::number(gamma)); } else if(elementson.tagName() == "brightness" && bNeedUpdate) { bNeedUpdate = false; printf("---brightness:%s---\n",elementson.text().toLatin1().data()); nodeson.firstChild().setNodeValue(QString::number(brightness)); } } nodeson = nodeson.nextSibling(); } } node = node.nextSibling(); } QFile file2("config/3vcam.xml"); if (!file2.open(QIODevice::WriteOnly | QIODevice::Truncate)) return -2; QTextStream out(&file2); doc.save(out, 4); file2.close(); return 0; #endif }
Qt Xml Dom
猜你喜欢
转载自www.cnblogs.com/zhaohu/p/9274951.html
今日推荐
周排行