Artigo

Navegando pelas tags XML usando a QT

Uma dica que, talvez, seja simples para os iniciados na QT, mas que me fez perder algum tempo raciocinando a respeito da solução ...

Uma dica que, talvez, seja simples para os iniciados na QT, mas que me fez perder algum tempo raciocinando a respeito da solução ...

O problema: navegar entre itens irmãos em um arquivo Xml, usando um objeto QDomElement. Por exemplo, você tem um arquivo Xml parecido com isto:

<minhatag indice="0">
<algumacoisa>valor</algumacoisa>
</minhatag>
<minhatag indice="1">
<algumacoisa>outro valor</algumacoisa>
</minhatag>
...
<minhatag indice="N">
<algumacoisa>ainda valor</algumacoisa>
</minhatag>

Como fazer para ir da minhatag com índice 0 para a minhatag com índice N? A solução é incrivelmente simples:

QDomElement mytag;// Código de carregamento e leitura do XML

// Suponha que root é o QDomElement que aponta para o nodo raiz. Isso vai
// posicionar mytag no primeiro nodo (de indice 0)

mytag = root.firstChildElement("minhatag");
while (!mytag.isNull()) {
    // Seu código de tratamento do QDomElement aqui.

    // Isso vai posicionar mytag para o próximo nodo, e assim sucessivamente.
    mytag = mytag.nextSiblingElement("minhatag");
}

Simples, não?