gpt4 book ai didi

javascript - 将 XmlHttpRequest 解析为 XmlListModel

转载 作者:行者123 更新时间:2023-11-30 05:43:44 26 4
gpt4 key购买 nike

我想将检索到的 xmlHttpRequest 对象放入 XMLListModel 中。我正在使用 qml。主要目标是评估我获得的 xml 并在列表中显示条目。如果有更好的方法 - 请告诉我。

我在这里找到了一个分析 xml 的“解决方案”: http://developer.nokia.com/Community/Discussion/showthread.php/232839-Qt-Quick-and-DOM-doc-responseXML-returns-null在这里 Parse XML from XMLHttpRequest但是很难深入挖掘 xml 结构,因为 xml 树的每一层都有循环。

所以我想要的两种方式:

1: XmlList

这将是我最喜欢的:将从 xmlHttpRequest 获得的数据解析为 XmlList 事物并免费(自动)获取列表。这个人想要同样的,但没有写出解决方案: http://qt-project.org/forums/viewthread/6460

我也试过:

XmlListModel{id: xmlModel}
...
xmlModel.xml = xhr.responseXML;

单独的第一行和最后一行,我在其中获取 xml。这表示“错误:无法将 null 分配给 QString”。我确信我得到了正确的 xml 答案,因为上面提到的搜索每个子项和标记名的方法正在运行。我还发现了一种不同的符号,类似于解析器,但这也不起作用。

2: XPath

var doc = new DOMParser().parseFromString(response, "text/xml");返回 DOMParser not defined .. 所以我想我在那里需要一些库,但没有找到任何关于该主题的信息(除了未回答的问题)。(与 .getElementById 和 evaluateXPath 以及我在网上找到的许多其他东西相同)

感谢任何提示!

最佳答案

XmlListModelxml 属性必须是字符串类型。因此,您必须分配 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();
}
}

关于javascript - 将 XmlHttpRequest 解析为 XmlListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com