Sencha Touch — извлечение XML-данных с сервера и сохранение их в объекте

#xml-parsing #sencha-touch

#синтаксический анализ xml #sencha-touch

Вопрос:

Я искал способ получить XML-данные с сервера и проанализировать их в объекте, чтобы я мог получить доступ к этим данным в любом месте моего приложения. Я нашел много кода, делающего это, создавая модель, хранилище и устанавливая прокси с помощью XmlReader. Да, это хорошо, но есть необходимость создания хранилища и прокси. Могу ли я каким-либо образом сказать, что это мой URL-адрес XML-данных, дайте мне проанализированный xml в объекте. Я думаю, что для получения JSON у нас есть способ, как показано ниже.

 Ext.util.JSONP.request({
    url: '<XYZ_URL>',        
    callbackKey: 'Successcallback',
    Successcallback: function(result) {
           console.log(result.data);   
           // Do your thing here
  

}});

Здесь мы получаем данные JSON с сервера, а в функции Successcallback мы получаем данные JSON в виде объекта в результате. Затем я могу сохранить этот результирующий объект глобально и использовать его или проходить через него где угодно.

Могу ли я сделать то же самое с XML-данными или я получу XML-данные в виде строки, а затем мне нужно будет проанализировать их вручную?

Комментарии:

1. В чем проблема с использованием хранилища? Я имею в виду, что они существуют по какой-то причине

2. Допустим, я не использую списки или компоненты с определенным шаблоном. У меня есть панель вкладок, и заголовок вкладки поступает с сервера в форме xml. Как мне указать TabPanel использовать данные, полученные с сервера, в формате xml? это может быть панель инструментов с n количеством кнопок с динамическим текстом.

Ответ №1:

вы можете отправить Ajax-запрос на указанный URL-адрес, и в методе отчета об успехе вы можете получить нужные данные

      e.g.
          Ext.Ajax.request({
               url: 'some_url',
               success: function(response, opts) {                                                                                        
                           // parse the responseText
                           var data = Ext.util.JSON.decode(response.responseText);
                           // save the username
                           localStorage.setItem("name", data.name);
                           localStorage.setItem("id", data.id);
                }
           });