//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 -;
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("");
userElement.setAttributeNode(attr);
element.appendChild(userElement); doc.save(out, ); //each line space of file is 4
return ;
#else if
QDomDocument doc;
QFile file("config/3vcam.xml");
QString error = "";
int row = , column = ;
if (!file.open(QIODevice::ReadOnly)) return -; if(!doc.setContent(&file, false, &error, &row, &column))
{
qDebug() << "parse file failed:" << row << "---" << column <<":" <<error;
file.close();
return -;
} 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 -;
QTextStream out(&file2);
doc.save(out, );
file2.close(); return ; #endif
}

Qt Xml Dom的更多相关文章

  1. QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例

    0. xml文档如下 <?xml version="1.0"?> <bookindex> <entry term="sidebearings ...

  2. Qt XML的使用

    Qt中对于XML文件的写入有两种方式,一个是使用QXmlStreamWriter,另一个则为使用Dom.stream流的形式相对来说更加灵活,而且适合处理大文件.Dom方式由于是将内容加载到了内存中进 ...

  3. Qt XML读取写入操作

    XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式: SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入 ...

  4. htm Dom对象与 Xml Dom对象的理解

    html 是基于Xml的文档规范.是一种特殊的xml文档,这一点很重要 1.xml 文档的操作,java,c#,...各种语言都提供了很好的api对文档进行解析,操作.当然js 也不例外,提供了一系列 ...

  5. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  6. python 应用xml.dom.minidom读xml

    xml文件 <?xml version="1.0" encoding="utf-8"?> <city> <name>上海&l ...

  7. XML DOM 循环(foreach)读取PHP数据 和 PHP 编写 XML DOM 【转载】

    用 PHP 读取和编写可扩展标记语言(XML)看起来可能有点恐怖.实际上,XML 和它的所有相关技术可能是恐怖的,但是用 PHP 读取和编写 XML 不一定是项恐怖的任务.首先,需要学习一点关于 XM ...

  8. PHP XML DOM

    PHP XML DOM 内建的 DOM 解析器使在 PHP 中处理 XML 文档成为可能. DOM 是什么? W3C DOM 提供了针对 HTML 和 XML 文档的标准对象集,以及用于访问和操作这些 ...

  9. JavaScript 【 IE中的XML DOM 】

    IE中的 XML DOM 在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同.DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM.所以,在不同的浏览器实现XML的 ...

随机推荐

  1. 用Promise对象实现的 Ajax 操作

  2. Pycharm主题设置以及导入方式

    主题下载链接: http://www.themesmap.com/ pycharm -- 导入主题(theme) and 修改背景颜色(护眼色)   前情提要 众所周知,随着python语言的不断流行 ...

  3. 利用 groupby apply list 分组合并字符

    利用 groupby apply list 分组合并字符 因为需要对数据进行分组和合并字符,找到了以下方法. 有点类似 SQL 的 Group BY. import pandas as pd impo ...

  4. Javascript 中 的 for ... in 和 for ... of 差别

    Javascript 中 的 for ... in 和 for ... of 差别 for ... in 是历史问题,在循环数据时会可以出现奇怪的问题,比如把数据的属性循环出来. for ... of ...

  5. JavaScript数组的一些奇葩行为

    今天,复习了一下JavaScript的数组,然后,把他的一些奇葩行为总结了一下,在这里和大家share一下,如果有不对的地方,欢迎指出! 奇葩1:Array()构造器函数可以不使用new关键字进行调用 ...

  6. taro 事件处理

    https://nervjs.github.io/taro/docs/event.html Taro 元素的事件处理和 DOM 元素的很相似.但是有一点语法上的不同: Taro 事件绑定属性的命名采用 ...

  7. Linux下Redis开机自启(Centos6)

    1.设置redis.conf中daemonize为yes,确保守护进程开启. 查找redis配置文件redis.conf [root@localhost /]# find / -name redis. ...

  8. 八、springboot(五)配置定时器

    1.修改启动类 @SpringBootApplication @EnableScheduling public class DemoApplication { public static void m ...

  9. 解决web项目存在多个log4j.properties配置文件,导致日志级别配置不生效问题

    java开启log4j的debug模式 -Dlog4j.debug=true tomcat启动debug模式: linux打开catalina.sh导入: export JAVA_OPTS=" ...

  10. java集合之HashMap源码解析

    Map是java中的一种数据结构,围绕着Map接口,有一系列的实现类如Hashtable.HashMap.LinkedHashMap和TreeMap.而其中HashMap和Hashtable我们平常使 ...