我想使用 ExtJS 的 Ext.Element 对象接口(interface)来遍历从 AJAX 请求中获得的 XML 响应,如下所示:
loadModel: function() {
console.log('Load Model....');
var conn = new Ext.data.Connection;
conn.request({
url: 'partsV10.xml',
callback: function(options, success, response) {
if (success) {
var modelDom = response.responseXML.documentElement;
this.buildUi(modelDom)
this.getDasPanel().doLayout();
}
},
scope: this
});
}
效果很好。在获得 AJAX 请求的响应后,根据我的理解,我有两种可能的方法来继续我的数据:
以如下方式使用标准 JavaScript 函数: buildUi:函数(当前元素,深度){ 如果(当前元素){
var j; var tagName = currentElement.tagName; console.log(tagName); // Traverse the tree var i = 0; var currentElementChild = currentElement.childNodes[i]; while (currentElementChild) { if (currentElementChild.nodeType == 1) { // Recursively traverse the tree structure of the child node this.buildUi(currentElementChild, depth + 1); } i++; currentElementChild = currentElement.childNodes[i]; } }
我可以从跨浏览器兼容的 Ext.Element 中获益!?但我不知道如何将我的回复“转换”到 Ext.Element 以便我可以使用向上、向下等功能。
非常感谢任何帮助或建议!
提前致谢
克里斯
最佳答案
在深入了解 ExtJS 和所有细节之后,我现在可以回答我自己的问题了。阅读 XMLResponse 后,我可以使用 Ext.DomQuery 遍历 dom。 XML DOM 文档可以通过第二个可选参数调用“root”来提供,我不得不承认这是显而易见的。
因此,查询 XML DOM 响应以获取名为“item-option”的节点的一种方法是:
var options = Ext.DomQuery.select('item-option', modelDom);
省略第二个参数,参数默认为标准文档dom。
关于ajax - ExtJS DOM 处理 XMLHTTPRequest.repsonseXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336480/