Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Загрузка XML файла и предстовление его как объекты XML, Используя Ajax я загружаю XML фаил и делаю тэги в объекты
 
В общем недавно решил сделать одну универсальную библиотеку, для облегчения программирования. но столкнулся с одной проблемой. Я загружаю файл xml. Затем хочу считать его, для этого использую Ajax. Затем каждый тэг я хочу представить в виде объекта JavaScript, который будет содержать текст, атрибут и его текст, а так же вложенные объекты которые относяться к вложенным тэгам.
Для загрузки документа я создал следующую библиотеку:
Код
// Создания объекта для хранения методов, свойств, событий для Ajax технологии
var net = new Object();

// Загрузка данных
net.ContentLoader = function(url, onload, typeFile, onerror)
{
this.url = url;
this.req = null;
this.onload = onload;
this.typeFile = typeFile;
this.XMLDom = new Object();
this.textData = null;
this.onerror = onerror ? onerror : this.defaultError;
this.loadXMLDoc(url);
}

net.ContentLoader.prototype = {
   loadXMLDoc:function(url)
   {
      if(window.XMLHttpRequest)
      {
      this.req = new XMLHttpRequest();
      }
      else if(window.ActiveXObject)
      {
      this.req = new ActiveXObject("Microsoft.XMLHTTP");
      }
      
      if(this.req)
      {
         try
         {
         var loader = this;
            this.req.onreadystatechange = function()
            {
            loader.onReadyState.call(loader);
            }
         this.req.open("GET", url, true);
         this.req.send(null);
         }
         catch(err)
         {
         this.onerror.call(this);
         }
      }
   },
   
   onReadyState:function()
   {
   var req = this.req;
   var ready = req.readyState;
      if(ready == 4)
      {
      var httpStatus = req.status;
         if(httpStatus == 200 || httpStatus == 0)
         {
            if(this.typeFile == "XML")
            {
            this.ObjectXML.call(this);
            this.onload.call(this);
            }
            else if(this.typeFile == "TEXT")
            {
            this.textData = req.responseText;
            this.onload.call(this);
            }
         }
      }
   },
   
   ObjectXML:function(layer)
   {
   // Здесь и происходит разбор тэгов и преобразование их в объекты JavaScript
   },
   
   defaultError:function()
   {
   alert("Ошибка");
   }
}

Что бы запустить данный код требуеться указать следующий код:
Код
var loader = new net.ContentLoader("data.xml", nextFunc, "XML");

Так же требуется создать функцию которая начнет выполняться когда вышеперечисленный код выполниться, в данном случаи мы его просто сделаем так:
Код
function nextFunc()
{
alert("nextFunc");
}

Допустим наш файл XML будет выглядить так:
Код
<data time="11:30">
ther's text 1
   <my>
      <name>reverent</name>
   </my>
there's text 2
</data>

Ве это выглядит круто, но проблема наступает во время выполнения функции ObjectXML. Как можно ее так создать что бы потом можно было обращаться к каждому элименту допустим таким образом:
Код
alert(this.XMLDom.data.my.name[$_text][0]); // reverent
alert(this.XMLDom.data.time); // выдаст 11:30
alert(this.XMLDom.data[$_text][0]); // выдаст ther's text 1

Все это конечно только задумка, но на деле если это реализовать то поможет облегчить работу с приходящими данными в виде XML.

У кого есть какие предложения по реализации данной функции????
 
у меня есть предложение не изобретить велосипед:
http://jQuery.com
унд
http://dklab.ru/lib/JsHttpRequest/manual.html
Страницы: 1
Читают тему