2010-07-15 6 views
5

में एक एक्सएमएल स्ट्रिंग का विश्लेषण कैसे करें मैं वेब सेवा बनाने के बाद उसमें एक एप्लीकेशन विकसित कर रहा हूं मुझे एक्सएमएल टैग में सर्वर से प्रतिक्रिया मिली है।क्यूटी

प्रतिक्रिया:

<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n 
<string...... /\">Hello World</string> 

मैं केवल "नमस्ते दुनिया" स्ट्रिंग पढ़ना चाहते हैं। मुझे इसे कैसे पार्स करना चाहिए?

उत्तर

18

मुझे आशा है कि इस मदद करता है:

QByteArray xmlText; 
//Get your xml into xmlText(you can use QString instead og QByteArray) 
QDomDocument doc; 
doc.setContent(xmlText); 
QDomNodeList list=doc.elementsByName("string"); 
QString helloWorld=list.at(0).toElement().text(); 
0

आप एक्सएमएल टोकन को रिक्त स्थान से प्रतिस्थापित करने के लिए QString :: replace (const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive) का उपयोग कर सकते हैं।

यदि आप जो एक्सएमएल टैग प्राप्त करेंगे, वह कई चीजें हो सकती हैं, तो मैं सुझाव देता हूं कि आप स्ट्रिंग से एक्सएमएल टैग को पट्टी करने में सक्षम होने के लिए XML handler लागू करें।

1

इस कोशिश ...!

QFile* file = new QFile(fileName); 
if (!file->open(QIODevice::ReadOnly | QIODevice::Text)) 
{ 
    QMessageBox::critical(this, "QXSRExample::ReadXMLFile", "Couldn't open xml file", QMessageBox::Ok); 
    return; 
} 

QXmlStreamReader xml(file); 
QXmlStreamReader::TokenType token; 
while(!xml.atEnd() && !xml.hasError()) 
{ 
    /* Read next element.*/ 
    token = xml.readNext(); 
    /* If token is just StartDocument, we'll go to next.*/ 
    if(token == QXmlStreamReader::StartDocument) 
     continue; 


if(token == QXmlStreamReader::Characters) 
    QMessage::information(this,"all text", xml.text().toString()); 
continue; 
} 
0

मैं कुछ QDom * क्लासेस कि क्यूटी में XML के साथ काम करने और अधिक आसान बनाता है पर एक साधारण आवरण लिखा था।

उदाहरण के लिए:

myxmlmap->$("tagnameq1")->$("tagname2.")->$("@attrname=attrvalue*").c.length() 

या यहां तक ​​कि इस तरह:

myxmlmap->$("tagname1>tagname2.>@attrname=attrvalue*").c.at(2).e.text() 

"*" - सभी मौजूदा नोड से पेड़ में बच्चों। "।" - केवल पहली पीढ़ी के बच्चे। ई - नोड तत्व। सी - नोड बच्चों की सूची। सभी पाए गए बच्चे भी "सी" विशेषता में संग्रहित हैं।