Обработка DOM ExtJS для XMLHTTPRequest.repsonseXML - PullRequest
3 голосов
/ 07 сентября 2011

Я хотел бы использовать объектный интерфейс Ext.Element из ExtJS для прохождения XML-ответа, который я получаю от AJAX-запроса, например:

  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, насколько я понимаю, у меня есть два возможных способа продолжить работу с моими данными:

  1. Используйте стандартные функции JavaScript таким образом: buildUi: функция (currentElement, глубина) { if (currentElement) {

        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];
        }
    }
    

    }

  2. Я мог бы воспользоваться кросс-браузерным Ext.Element !? Но я не могу понять, как «привести» мой ответ в Ext.Element, чтобы я мог использовать функцию «вверх», «вниз» и т.д.

Любая помощь или предложение действительно приветствуется!

Заранее спасибо

Chris

1 Ответ

2 голосов
/ 10 сентября 2011

После более подробного изучения ExtJS и всех мелких деталей я могу ответить на свой вопрос. После прочтения XMLResponse я могу использовать Ext.DomQuery для обхода домена. Документ XML DOM может быть предоставлен вторым необязательным параметром, называемым «root», что очевидно, что я должен признать.

Таким образом, один из способов запроса ответа XML DOM для узлов, которые называются «item-option», можно использовать как:

var options = Ext.DomQuery.select('item-option', modelDom);

Если оставить второй параметр, по умолчанию этот параметр соответствует стандартному документу dom.

...