Название: Простой вопрос про чтение XML
Отправлено: Scotty от Октябрь 08, 2009, 22:44
Вопрос прост, есть файл XML такого вот содержания: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE Nodes [ <!ENTITY % NameValue "CDATA"> <!ENTITY % PropType "(I|S|D|L|H|B)"> <!ENTITY % VersionValue "CDATA"> <!ELEMENT Prp (#PCDATA)> <!ELEMENT Node (Node|Prp)*> <!ELEMENT Nodes (Node)+>
<!ATTLIST Nodes version CDATA "1">
<!ATTLIST Node name CDATA #REQUIRED>
<!ATTLIST Prp name CDATA #REQUIRED> <!ATTLIST Prp type CDATA #REQUIRED> <!ATTLIST Prp value CDATA #REQUIRED> ]> <Nodes version="1"> <Node name="root"> <Prp name="start time" type="D" value="40094.9167055787"/> <Prp name="test type" type="S" value="GetLogInformation"/> <Prp name="stop time" type="D" value="40094.9168594792"/> <Prp name="error count" type="I" value="0"/> <Prp name="warning count" type="I" value="0"/> <Prp name="root file name" type="S" value="RootLogData.dat"/> <Prp name="root logdata name" type="S" value=""/> <Prp name="completed" type="B" value="-1"/> <Prp name="computer name" type="S" value="QWERTY"/> <Prp name="status" type="I" value="0"/> <Prp name="user name" type="S" value="scotty"/> </Node> </Nodes>
И собственно сам вопрос, как это мне разобрать ... всмысле мне нужно получить значениие аттрибута value у "root file name". Я пытался разобраться с xbeltree но так как там написано - не получилось ... помогите пожалуйста, я в Qt новичек и пока что ничего толком сделать не могу ... заранее большое спасибо ... p.s. Я пытался делать так : void MainWindow::GetCount(){ QDomDocument *doc = new QDomDocument("C:\\pro\\1.xml"); qDebug() << doc->firstChild().firstChild().childNodes().count(); }
Но упорно получаю нуль ... незнаю что делать ...
Название: Re: Простой вопрос про чтение XML
Отправлено: vaprele07 от Октябрь 09, 2009, 03:04
Ну так doc->firstChild().nodeName() тебе скажет почему;)
Название: Re: Простой вопрос про чтение XML
Отправлено: Scotty от Октябрь 09, 2009, 14:34
Так он и говорит мол пусто ... ??? незнаю почему, что я сделал не так ? Может я как то не правильно работаю с XML?
Название: Re: Простой вопрос про чтение XML
Отправлено: break от Октябрь 22, 2009, 02:09
C++ (Qt) QDomDocument doc(""); if ( !openXMLfile( "ИМЯ_XML_ФАЙЛА", QIODevice::ReadOnly, doc ) ) return ; QDomElement deRoot = doc.documentElement(); QDomElement deNode = deRoot.namedItem("Node").toElement(); QDomElement deProp; QDomNodeList dnlProps = deNode.elementsByTagName("Prp"); for( uint i=0; i < dnlProps.length(); ++i ) { deProp = dnlProps.item(i).toElement(); if ( dnlProps.attribute("name") == "root file name" ) { qDebug() << dnlProps.attribute("value"); } }; bool openXMLfile( QString fname, QFile::OpenMode mode, QDomDocument& doc ) { QFile file( fname ); if ( !file.open(mode) ) { qDebug() << "Error open file: " << fname << "!!!"; return false; }; if ( !doc.setContent(&file) ) { qDebug() << "Error read XML file: " << fname << "!!!"; file.close(); return false; } file.close(); return true; }
|