I use this code to read xml.
bool CSKHttp::GetDataFromXml(CSKRequest* req)
{
int errorLine;
int errorColumn;
req->m_buffer.close();
if(!(domDoc.setContent(byteArray,false,&errorString,&errorLine,&errorColumn))) {
mocW("rq")<<"xml document error <MESS:"<<errorString<<"><LINE"
<<errorLine<<"><COLUMN"<<errorColumn<<">"<<endl;
mocW("rq")<<"<ANSWER:"<<byteArray<<">"<<endl;
return false;
}
byteArray.replace("\n"," ");
mocD("rq")<<"<ANSWER:"<<byteArray<<">"<<endl;
TraverseXmlNode(domElement,req);
return true;
}
void CSKHttp::TraverseXmlNode(const QDomNode& node, CSKRequest* req)
{
while(!(domNode.isNull())) {
if(domNode.isElement()) {
domElement = domNode.toElement();
if(!(domElement.isNull()))
req->Data(domElement.tagName(),domElement.text());
}
TraverseXmlNode(domNode,req);
domNode = domNode.nextSibling();
}
}
bool CSKHttp::GetDataFromXml(CSKRequest* req)
{
QDomDocument domDoc;
QString errorString;
int errorLine;
int errorColumn;
req->m_buffer.open(QIODevice::ReadOnly);
QByteArray byteArray(req->m_buffer.readAll());
req->m_buffer.close();
if(!(domDoc.setContent(byteArray,false,&errorString,&errorLine,&errorColumn))) {
mocW("rq")<<"xml document error <MESS:"<<errorString<<"><LINE"
<<errorLine<<"><COLUMN"<<errorColumn<<">"<<endl;
mocW("rq")<<"<ANSWER:"<<byteArray<<">"<<endl;
return false;
}
QDomElement domElement = domDoc.documentElement();
byteArray.replace("\n"," ");
mocD("rq")<<"<ANSWER:"<<byteArray<<">"<<endl;
TraverseXmlNode(domElement,req);
return true;
}
void CSKHttp::TraverseXmlNode(const QDomNode& node, CSKRequest* req)
{
QDomNode domNode = node.firstChild();
QDomElement domElement;
while(!(domNode.isNull())) {
if(domNode.isElement()) {
domElement = domNode.toElement();
if(!(domElement.isNull()))
req->Data(domElement.tagName(),domElement.text());
}
TraverseXmlNode(domNode,req);
domNode = domNode.nextSibling();
}
}
To copy to clipboard, switch view to plain text mode
may be useful for you.
Bookmarks