[英]Parse XmlHttpRequest to XmlListModel
我想將檢索到的xmlHttpRequest對象放入XMLListModel中。 我正在使用qml。 主要目標是評估我得到的xml並將其顯示在列表中。 如果有更好的方法,請告訴我。
我在這里找到了用於分析xml的“解決方案”: http : //developer.nokia.com/Community/Discussion/showthread.php/232839-Qt-Quick-and-DOM-doc-responseXML-returns-null ,在這里進行了解析來自XMLHttpRequest的XML但深入研究xml結構非常糟糕,因為xml樹的每個級別周圍都有循環。
因此,我想擁有2種方式:
這將是我的最愛:將我從xmlHttpRequest獲得的數據解析為XmlList事物,並免費(自動)獲得列表。 這個家伙想要一樣的東西,但是沒有寫出解決方案: http : //qt-project.org/forums/viewthread/6460
我也嘗試過:
XmlListModel{id: xmlModel}
...
xmlModel.xml = xhr.responseXML;
分別是第一個和最后一行,從中獲取xml。 這表明“錯誤:無法為QString分配空值”。 我敢肯定,我得到了正確的xml答案,因為上述搜索每個孩子和標記名的方法都有效。 我也發現了類似解析器的不同記法,但是那也不起作用。
var doc = new DOMParser()。parseFromString(response,“ text / xml”); 返回未定義的DOMParser ..所以我想我在那里需要一些庫,但是沒有找到任何有關該主題的東西(比未回答的問題要多)。 (與.getElementById和valuateXPath以及我在網上發現的許多其他內容相同)
任何提示表示贊賞!
XmlListModel
的xml
屬性必須為字符串類型。 因此,您必須分配xhr.responseText
而不是xhr.responseXML
。 這是一個最小的工作示例(使用數據URI以便模擬服務器響應):
import QtQuick 1.0
ListView {
width: 200; height: 200
delegate: Text {
text: name
}
model: XmlListModel {
id: xmlModel
query: "/names/name"
XmlRole { name: "name"; query: "string()" }
}
Component.onCompleted: {
/* <names>
<name>John</name>
<name>Max</name>
<name>Sandy</name>
</names> */
var dataURI = "data:application/xml;base64,PG5hbWVzPjxuYW1lPkpvaG48L25hbWU+PG5hbWU+TWF4PC9uYW1lPjxuYW1lPlNhbmR5PC9uYW1lPjwvbmFtZXM+"
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState == 4) {
xmlModel.xml = req.responseText; //<<<
}
};
req.open("get", dataURI, true);
req.send();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.