我想改变" A"在Apple中,键值为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");
}
答案 0 :(得分:1)
在您的代码中,domElement.firstChild()
引用<Apple>
元素节点,不指向其内容。 <Apple>
中的值也一个节点(text node),这就是它在DOM层次结构中位于更深层的原因:
domElement
- <Key>
domElement.firstChild()
- <Apple>
domElement.firstChild().firstChild()
- A
因此,您还必须获得<Apple>
元素节点的第一个子节点:
domElement.firstChild().firstChild().setNodeValue("D");
答案 1 :(得分:0)
也许:
if (attribute.value() == "1")