-3

我需要解析文件 xml 我有一个显示的链接

<labels>
<label name="name1">
<description name="name1" url="http:............."/>
<description name="name2" url="http:............."/>
</label>
<label name="name2">
<description name="name1" url="http:............."/>
<description name="name2" url="http:............."/>
</label>
<labels>

然后将其显示在列表中。我使用此方法得到 url 的回复,因为 xml 包含

 if (reply) {
                if (reply->error() == QNetworkReply::NoError) {
                    int available = reply->bytesAvailable();
                    if (available > 0) {
                        int bufSize = sizeof(char) * available + sizeof(char);
                        QByteArray buffer(bufSize, 0);
                        int read = reply->read(buffer.data(), available);
                        response = QString(buffer);
                    }
                } else {
                    response =
                            QString("Error: ") + reply->errorString()
                                    + QString(" status:")
                                    + reply->attribute(
                                            QNetworkRequest::HttpStatusCodeAttribute).toString();
                }
                reply->deleteLater();
            }

我如何解析它并在列表中显示项目?

4

1 回答 1

2

XMLDataModel 直接将 Xml 解析成 QVariantMap:

if (reply->error() == QNetworkReply::NoError) {
   XmlDataAccess xda;
   QVariantMap data = xda.load(reply).value<QVariantMap>();

   if (xda.hasError()) {
       bb::data::DataAccessError error = xda.error();
       qWarning() <<  " XML error: " << error.errorMessage();
   } else{
       emit requestSuccess(data);
   }
} else {
[...]

使用 data["label"].value().at(0) 等访问它...

于 2013-06-12T16:22:45.113 回答