Всем привет!
Такая вот простая незадача: есть до умопомрачения простейшая xml, но не могу найти внятного пояснения в стандартных Qt библиотек для этого случая
<тэг1>
Текст 1.
<тэг2>
Текст 4.
</тэг2>
Текст 2.
<тэг3>
Текст 5.
</тэг3>
Текст 3.
</тэг1>
Суть в том, что сначала надо прочитать тэг1 с текст1, текст2, текст3, потом, соответственно, тэг2 с текст4 и тэг3 с текст5. QXmlStreamReader явно не подходит, хотя и пробовал нагородить с запоминанием пройденный тэгов. Теперь мучаю QDomNode, но он ведет себя так же, как предыдущий: либо читает только текст находящийся в самом верху(текст1, текст4 и текст5), либо методом text() выдает все тексты внутри каждого тэга (т.е, для тэг1 выдает все тексты в порядке 1,4,2,5,3 и т.д.). Подскажите, кто знает, пожалуйста, как этого добиться, желательно, примером
код:
void MyClass::parse_xml(QDomNode &node)
{
QDomNode domNode = node.firstChild();
while (!domNode.isNull())
{
qDebug() << "el";
if(domNode.isElement())
{
QDomElement domElement = domNode.toElement();
if (!domElement.isNull())
{
qDebug() << "tagname: " << domElement.tagName();
if (domElement.hasAttributes())
{
QDomNamedNodeMap attrmap = domElement.attributes();
for (int i = 0; i < attrmap.count(); i++)
{
qDebug() << "attribute: " << attrmap.item(i).toAttr().name()
<< ", value:" << attrmap.item(i).toAttr().value();
}
}
qDebug() << "tagbody: " << domElement.text().simplified();
}
}
parse_xml(domNode);
domNode = domNode.nextSibling();
}
}