Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / [AJAX] Кто какие библиотеки для JS парсинга XML использует? / 8 сообщений из 8, страница 1 из 1
03.10.2006, 13:05:59
    #34028452
Alexey Turn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
Хочется, чтобы была совместимой с MOzilla, Opera и IE.

Задача - послать XMLHttpRequest, получить response в виде XML
и вытащить из него данные в JS объекты, ну и применить их соответственно по назначению.

Посоветуйте, как парсить XML?

Можно, конечно, просто подгружать куски html, но это не есть гуд, и не поможет, когда нужно вернуть на клиентка какую -нибудь осмысленную структурку и обработать.
...
Рейтинг: 0 / 0
03.10.2006, 17:37:26
    #34029578
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
А чем DOM плох? Пишете крос браузерный билдер:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
function buildDocument(xmlText){
  var retval;
   try {
    var domParser= new  DOMParser();
    retval=domParser.parseFromString(xmlText,"text/xml");
     if (retval.documentElement.tagName=="parsererror"){
      var reError=/>([\s\S]*?)Location:([\s\S]*?)Line Number (\d+), Column(\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;
      reError.test(retval.xml);
      alert("An error occurred:\r\nDescription: "+RegExp.$ 1 +"\r\nFile: "+RegExp.$ 2 +"\r\nLine: "+RegExp.$ 3 +"\r\nLine Pos: "+RegExp.$ 4 +"\r\nSource: "+RegExp.$ 5 );
      retval= null ;
    }
     return  retval;
  }  catch (e2) {
    retval= null ;
  }
  var aMSSignatures=["MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];
   for (var i= 0 ;i<aMSSignatures.length;i++){
     try {
      retval= new  ActiveXObject(aMSSignatures[i]);
      retval.async=false;
      retval.loadXML(xmlText);
       if (retval.parseError!= 0 ) {
        var oError=retval.parseError;
        alert("An error occurred:\nError Code: "+oError.errorCode +"\r\nLine: "+oError.line+ "\r\nLine Pos: "+oError.linepos+"\r\nReason: "+oError.reason);
        retval= null ;
      }
    }  catch (e) {
      retval= null ;
    }
     if (retval)  return  retval;
  }
   return  retval;
}

(заметьте, для MS берется версия не позднее 3.0 - в более поздних проблемы с xPath)

и работаете с DOM. Мне в 99% случаев хватает двух слежующих функций:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
function selectFirstNode(node,xPath){
  var retval;
   try { retval=node.selectSingleNode(xPath); }
   catch (e){
    var list=selectNodes(node,xPath);
     if (list && list.length> 0 ) retval=list[ 0 ];
     else  retval= null ;
  }
   return  retval;
}
function selectNodes(node,xPath){
  var retval;
   try {
    retval=node.selectNodes(xPath);
  }  catch (e) {
     try {
      var xpe= new  XPathEvaluator();
      var nsResolver=xpe.createNSResolver(node.ownerDocument== null  ? node.documentElement : node.ownerDocument.documentElement);
      var eResult=xpe.evaluate(xPath,node,nsResolver, 0 , null );
      retval=[];
      var eResultItem;
       while (eResultItem=eResult.iterateNext()) retval.push(eResultItem);
    }  catch (e2) {
      retval= null ;
    }
  }
   return  retval;
}
...
Рейтинг: 0 / 0
03.10.2006, 17:39:16
    #34029585
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
Нет, все-таки забыл еще пару функций, которые вместе с вышеприведенными кроют 99% потребностей:

Код: plaintext
1.
2.
3.
4.
5.
6.
function getNodeText(node){
   if (node && node.firstChild)  return  node.firstChild.nodeValue;
   return  "";
}
function getChildNodeText(node,childName){
   return  getNodeText(selectFirstNode(node,childName));
}
...
Рейтинг: 0 / 0
03.10.2006, 17:43:49
    #34029602
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
Нет, все-таки еще не проснулся после обеда. Вышеприведенные 4 функции ВМЕСТЕ со стандартными функциями манипулирования DOM кроют 99% потребностей моих программ на JavaScript по разборке XML.
...
Рейтинг: 0 / 0
04.10.2006, 08:33:22
    #34030420
Alexey Turn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
А в опере данная конструкция работать будет? Вы не могли бы привести пример(ссылку) использования написанных здесь функций?
...
Рейтинг: 0 / 0
04.10.2006, 09:53:58
    #34030577
fleh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
Модераторам: не переносите, пожалуйста, это сообщение никуда. потом искать проще :)
...
Рейтинг: 0 / 0
04.10.2006, 12:13:47
    #34031135
Alexey Turn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
Подскажите еще пожалуйста, где можно посмотреть DOM API (как JAXP API в java). Приходится тыкаться наугад и натыкаться на такие весчи, как:

node.getFirstChild()!=node.firstChild
...
Рейтинг: 0 / 0
04.10.2006, 13:46:58
    #34031566
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[AJAX] Кто какие библиотеки для JS парсинга XML использует?
Alexey TurnА в опере данная конструкция работать будет? Вы не могли бы привести пример(ссылку) использования написанных здесь функций?

А в Опере не будет - да мне и не надо. Опера не поддерживает xPath. Это не означает, однако, что нельзя разобрать дерево методами DOM - просто будет долго и нудно.

Про DOM все написано в

http://www.w3.org/DOM/
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / [AJAX] Кто какие библиотеки для JS парсинга XML использует? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]