QDomNode 类读取 qt 中子项的值

QDomNode Class read value of child in qt

本文关键字:读取 qt QDomNode      更新时间:2023-10-16

我想在Apple中更改"A",在键中值为1到"D",在此代码中应替换2项。我尝试过这样的事情,但没有任何反应。

 <C>
    <B>  
    <Key value="1">
       <Apple>A</Apple>
    </Key>
    <Key value="2">
       <Apple>A</Apple>
    </Key>
    <Key value="3">
       <Apple>A</Apple>
    </Key>
    <Key value="1">
       <Apple>A</Apple>
    </Key>
    </B>
 </C> 

Qt:

QDomNodeList roots = doc.elementsByTagName("Key");
for (int i = 0; i < roots.size(); ++i) {
    QDomElement domElement = roots.at(i).toElement();
    QDomAttr attribute = domElement.attributeNode("value");
    if (attribute.value() == "1") { 
        domElement.firstChild().setNodeValue("D");
    }

在代码中,domElement.firstChild() 引用<Apple>元素节点,而不是其内容。<Apple> 中的值也是一个节点(文本节点),这就是为什么它位于 DOM 层次结构中更深一级的原因:

  • domElement <Key>
  • domElement.firstChild() <Apple>
  • domElement.firstChild().firstChild() A

因此,您还必须获取<Apple>元素节点的第一个子节点:

domElement.firstChild().firstChild().setNodeValue("D");

也许:

if (attribute.value() == "1")