首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >qt中子类的QDomNode类读取值

qt中子类的QDomNode类读取值
EN

Stack Overflow用户
提问于 2017-02-01 19:26:13
回答 2查看 902关注 0票数 1

我想改变"A“在苹果,在键的值是1到"D",在这个代码中的2项应该被替换。我试过这样做,但什么也没发生。

代码语言:javascript
运行
复制
 <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:

代码语言:javascript
运行
复制
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");
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-01 20:16:38

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

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

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

代码语言:javascript
运行
复制
domElement.firstChild().firstChild().setNodeValue("D");
票数 0
EN

Stack Overflow用户

发布于 2017-02-01 19:30:38

也许:

代码语言:javascript
运行
复制
if (attribute.value() == "1")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41988025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档