KoXmlReader, this is bug or not

Elvis Stansvik elvstone at gmail.com
Thu Aug 2 18:42:17 BST 2012


2012/8/2 Elvis Stansvik <elvstone at gmail.com>:
> 2012/8/2 mojtaba shahi Senobari <mojtaba.shahi3000 at gmail.com>:
>> Hi all
>>
>> I was working with KoXmlReader and  at a node ( just include attributes ) i
>> try firstChild().
>>
>> I except an element, that should be a child of my node, but no result.
>
> Perhaps what you're looking for is firstChildElement() ? I think in
> DOM, a node can by any type of node (element node, attribute node,
> text node et.c.), and the first child node happens to be an attribute
> node in your case.
>
> I think firstChildElement will give you the first child element node.

I think I am wrong. At least I'm seeing a difference in behavior in
KoXml vs. QDom here. With this input

test.xml:
<foo>
    <bar/>
</foo>

the program

#include <QDebug>
#include <QFile>
#include <QDomDocument>
#include <QDomNode>

int main (int, char **)
{
    QFile file("test.xml");
    QDomDocument doc;
    doc.setContent(&file);
    switch (doc.documentElement().firstChild().nodeType()) {
        case QDomNode::ElementNode:
            qDebug() << "ElementNode";
            break;
        case QDomNode::AttributeNode:
            qDebug() << "AttributeNode";
            break;
        case QDomNode::TextNode:
            qDebug() << "TextNode";
            break;
        default:
            qDebug() << "Unknown";
            break;
    }

    return 0;
}

gives ElementNode as output, while the program

#include <KoXmlReader.h>

int main (int, char **)
{
    QFile file("test.xml");
    KoXmlDocument doc;
    doc.setContent(&file);
    switch (doc.documentElement().firstChild().nodeType()) {
        case KoXmlNode::ElementNode:
            qDebug() << "ElementNode";
            break;
        case KoXmlNode::TextNode:
            qDebug() << "TextNode";
            break;
        default:
            qDebug() << "Unknown";
            break;
    }

    return 0;
}

gives TextNode as output.

Shouldn't KoXml* and QDom* be functionally equivalent?

Elvis

>
> Elvis
>
>>
>> I checked and  found that the result of firstChild is a KoXmlText.
>>
>> I think in this method (firstChild) programmer has not ignored  attributes
>> of node.
>>
>> and this is for method KoXmlReader::nextSibling().
>>
>> Am i right and it is a bug or no, i am doing some thing wrong ?
>>
>> moji
>>
>> _______________________________________________
>> calligra-devel mailing list
>> calligra-devel at kde.org
>> https://mail.kde.org/mailman/listinfo/calligra-devel
>>



More information about the calligra-devel mailing list