指向QDomDocument中的QDomNode的指针

时间:2014-05-04 15:45:51

标签: c++ qt xml-parsing

如何在QDomNode中找到指向具体QDomDocument的指针?

void MainWindow::traverseNode(const QDomNode& node,int &objectCounter)
{
    QDomNode domNode = node.firstChild();
    while(!domNode.isNull()) {
        if(domNode.isElement()) {
            QDomElement domElement = domNode.toElement();
            if(!domElement.isNull()) {
                domElement.setAttribute("id",QString::number(objectCounter));
                ++objectCounter;
                //and save pointer to this element somewhere
            }
        }
        traverseNode(domNode,objectCounter);
        domNode = domNode.nextSibling();
    }
}

2 个答案:

答案 0 :(得分:0)

只需使用&domNode作为指向具体QDomNode的指针。查看文档,这很可能会产生您想要的效果(在问题中没有明确说明):

  

更改返回的节点也将更改文档树中的节点。

答案 1 :(得分:0)

你可以这样做:

domNode = domNode.nextSibling();
m_currentDomNotePointer = &domNode; // You could also use a pointer vector.

然后您就可以在另一种方法中使用此m_currentDomNotePointer

MyClass::anotherMethod()
{
    // use m_currentDomNotePointer
}

但是这一切看起来都有点徒劳,因为你可以保存const QDomNode& node并重复使用与此方法类似的方法。除非你只有一个或几个特定的​​“容器”元素,否则我不明白你为什么要避免这种情况。