⚠️ Forum Maintenance: Feb 6th, 8am - 14pm (UTC+2)

Iterate over XML with QXmlStreamReader

  • Hi Folks,

    I have to build a project that process XML files, so I started to learn a bit about Qt XML with QXmlStreamReader, but it seems I'm in trouble. I have a XML files, like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <root name="readername">
    <proeprty name="hwInputNumber" ...>
    <proeprty name="defaultGateway" ...>
    <enumeration name="input">
    <proeprty name="trigger" ...>
    <enumeration name="output">
    <proeprty name="adress" ...>

    and I wrote some code, that targets to print out the name of the XML nodes and the value of the "name" attribute:
    QXmlStreamReader reader(&_project);
    while (!reader.isEndDocument()) {
    qDebug() << reader.name() << reader.attributes().value("name");
    else if(reader.isEndElement()) {
    qDebug() << "";

    It seems that the processing getting into an infinite loop when it reaches the "<proeprty name="trigger" ...>" line under the "enumeration" node.

    I guessed that some "step back" should be exist that navigate me to the parent node, but I didn't found such a method in the API reference.

    Can anybody help me?


  • Lifetime Qt Champion


    You should take a look at the Stream Bookmarks example You'll see how to parse an an xml file.

  • Hi,

    thank you very much, it was a really nice help. (Additionally, my XML file wasn't well formatted, but it's fixed).
    But there is one thing that I didn't see, how can I relaize: how can I insert a node into an existing XML file?