• 11633阅读
  • 4回复

[提问]QDomElement: 怎样修改text值 [复制链接]

上一主题 下一主题
离线bonbonice99
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-14
当用QDomDocument去解析XML文件的时候,常遇到的一个问题就是要修改element的值然后保存,在论坛上查了下好像没有很好的办法

比如我有个element

<name>a</name>

要改成
<name>b</name>

目前我用的方法是把当前Element和父element同时传入进行replace:

  1. bool VXmlParser::setElementText(const QString &value, const QString &tagName, const QString &parentTagName)
  2. {
  3.     QString str(xmlDoc.toString());
  4.     QDomElement parentElement = elementByTagName(parentTagName);
  5.     QDomElement oldElement = elementByTagName(tagName);
  6.     QDomElement newElement = xmlDoc.createElement(tagName);
  7.     QDomText valueText = xmlDoc.createTextNode(value);
  8.     newElement.appendChild(valueText);
  9.     parentElement.replaceChild(newElement, oldElement);
  10.     return true;
  11. }


但是这种办法的不方便之处是你要知道父节点并传入。不知道大家有没有什么更好的办法
离线archoon
只看该作者 1楼 发表于: 2009-12-22
我也是觉得只有这种办法了,
使用setNodeValue 和 nodeValue赋值完全没用
离线小怪兽
只看该作者 2楼 发表于: 2009-12-30
a是节点name的一个子节点。
离线zzxap

只看该作者 3楼 发表于: 2011-03-16
要include 什么才可以用 QDomDocument QDomElement QDomNodeList
离线eyeiciiu
只看该作者 4楼 发表于: 2013-03-14
恩  a  也是作为name的一个子结点
这样画容易理解 <name>
                                   a
                           </name>
可以这样改 ,假设 你获得 name 这个结点的 QDomElement 的名字叫 name_node;

name_node.firstChild().setNodeValue("b");

快速回复
限100 字节
 
上一个 下一个