The difference beteen QDomNode and QDomElement
I am writing an applications which uses a lot of XML for it's input. Until now I have been using QDomNode, and now I saw that there is a QDomElement class which can be used as well. I see that QDomElement is more suitable for me, since I can query it's sub childs but this still returns to me a QDomNode list, which in turn can be converted to elements.
My question is why there is this separation between elements and nodes? Is it really needed? This just makes my code lines way larger.... :)
edit:
Lets give you an example of those monstrosities:
Code:
e.start = node.toElement().elementsByTagName("start-regex").item(0).toElement().text();
Re: The difference beteen QDomNode and QDomElement
Quote:
Originally Posted by elcuco
My question is why there is this separation between elements and nodes?
Because not every node is an element. Of course it would be simplier if would QDomElement::elementsByTagName() return list of elements, but this method was defined in DOM specification like this:
Code:
interface Element : Node {
...
NodeList getElementsByTagName(in DOMString name);
...
};
So the Trolls had not much choice.
Re: The difference beteen QDomNode and QDomElement
As the name suggests QDomNode gives you a node in the tree structure.
QDomNode will give u a particular node, its siblings, no of children etc....
QDomElement on the other hand does not have information about the neighbors. It knows only about the given node, its attributes, tags and the text.
Hope i have cleared your doubt.
Cheers
Re: The difference beteen QDomNode and QDomElement
The difference is that node can also be a comment, or a processing instruction, or text data.
So be careful when iterating over the result and calling toElement, it could fail on e.g. comments.
See the section QDomElement at the bottom of
http://developer.kde.org/documentati.../mistakes.html
PS: previous reply is wrong; an element does know about its siblings since an element *is* a node.
Re: The difference beteen QDomNode and QDomElement