Qt通过dom方式修改xml
来源:互联网 发布:教皇的权力 知乎 编辑:程序博客网 时间:2024/06/05 04:28
DOM是一种解析由万维网协会(W3C)所开发的XML文档的标准应用程序编程接口。Qt提供一套用于读取、操作和编写XML文档的非验证型二级DOM实现。
DOM把XML文件表示成内存中的一棵树。我们可以按需要遍历这个DOM树,也可以修改这个树并把它作为XML文件保存到磁盘中。
让我们考虑如下这个XML文档:
<doc>
<quote>Scio me nihil scire</quote>
<translation>I know that I know nothing></translation>
</doc>
它对于如下所示的DOM树:
Document
Element(doc)
Element(quote)
Text(“Scio me nihil scire”)
Element(translation)
Text(“I know that I know nothing”)
这个DOM树包含不同类型的节点。例如,Element节点对应打开标签以及与它匹配的关闭标签。在这两个标签之间的内容则作为这个Element节点的子节点出现。(注意蓝色字体)
上面的介绍主要是用来说明dom树的结构情况,下面则进入正题看如何通过qt来达到修改xml文件的目的。本文中主要说明如何修改xml属性值以及节点值,
修改属性值的代码如下:
bool QXmlEdit::SetAValue(const QString &key, const QVariant &value)
{
try
{
QString tag;
QString attName;
QStringList sl=key.split("/");
tag = sl.at(0);
attName = sl.at(1);
QDomElement docElem = doc.documentElement();
QDomNodeList nodeList = docElem.elementsByTagName(tag);
if (nodeList.count() >0 )
{
QDomElement el = nodeList.at(0).toElement();
el.setAttribute(attName,value.toString()); //设置属性值QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
return false;
}
QTextStream out(&file);
doc.save(out,4);
}
return true;
}
catch (...)
{
return false;
}
}修改节点值的代码如下:
bool QXmlEdit::SetTValue(const QString &key, const QVariant &value)
{
try
{
QDomElement docElem = doc.documentElement();
QDomNodeList nodeList = docElem.elementsByTagName(key);
if (nodeList.count() >0 )
{
QDomElement el = nodeList.at(0).toElement(); //tag为key的节点
QDomNode oldnode = el.firstChild(); //标签之间的内容作为节点的子节点出现,得到原来的子节点
el.firstChild().setNodeValue(value.toString()); //用提供的value值来设置子节点的内容QDomNode newnode = el.firstChild(); //值修改过后的子节点el.replaceChild(newnode,oldnode); //调用节点的replaceChild方法实现修改功能
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
return false;
}
QTextStream out(&file);
doc.save(out,4);
}
return true;
}
catch (...)
{
return false;
}
}
至此我们就实现了修改xml属性及text的功能。
看完了,访问下我做的网站作为支持吧 www.xiabanl.com 下班族论坛
- Qt通过dom方式修改xml
- Qt通过dom方式修改xml
- QT Dom修改xml
- Qt下Dom方式修改xml节点的方法
- Qt下Dom方式修改xml文件的结点值
- Qt下Dom方式修改xml节点的方法 (简化版)
- QT DOM方式写入xml文件
- QT DOM方式读取xml文件(QDomElement)
- qt读写XML资料[DOM方式]
- QT DOM的方式读写Xml文件
- QT DOM方式写入xml文件
- QT DOM方式读取xml文件(QDomElement)
- Qt:用Dom方式读写xml文件
- js 通过DOM方式解析XML文档
- 通过Dom方式解析xml文件
- java--通过DOM方式创建xml文件
- 通过DOM方式生成xml文件
- android修改xml文档—DOM方式
- 解决asp.net中“从客户端(......)中检测到有潜在危险的 Request.Form 值。”错误
- C语言一些常用语句
- C/C++ Build Errors
- Symbian界面编程中关于Edit焦点切换的问题
- NetBeans6.8下建立Ruby调试环境
- Qt通过dom方式修改xml
- o3d教程4 - 纹理映射
- Java多线程编程要点 (一)
- 网站链接和待总结
- linux 启用root及更改密码
- winhddif blog
- Javascript判断滚动条是否到达页面的尾部
- svn在linux下的使用(svn命令)
- 今天北京的天空是湛蓝的