кросс-браузерная стандартная обработка XML в Java Script - PullRequest
7 голосов
/ 27 июня 2009

Я пытаюсь выяснить, как обрабатывать XML в java-скрипте, так что я погуглил. Проблема в том, что я не знаю, будут ли учебники, которые я вижу, работать только в IE.

Что такое "Стандартный" способ обработки данных XML в сценарии Java?

Edit: Спасибо за все ваши ответы. Я хочу задать еще один вопрос. Есть ли какая-нибудь сторонняя библиотека, которая позволяет мне транзакционно писать код JS, не беспокоясь о кросс-браузерной функциональности

Ответы [ 5 ]

6 голосов
/ 27 июня 2009

Может быть, вам стоит взглянуть на сарисса . это кроссбраузерная библиотека, которую я считаю очень полезной и простой в использовании. Это позволяет вам

  • загрузка XML из URL или строк,
  • выполнить преобразования XSLT,
  • применить запросы XPath

Работает в основных браузерах и имеет лицензию GPL

2 голосов
/ 27 июня 2009

Другой вариант - использовать стороннюю библиотеку, такую ​​как AjaXSLT от Google, для абстрагирования кода, специфичного для браузера. Это означает, что вы можете просто сконцентрироваться на вызове стандартных методов DOM, как определено в спецификации XML. Парсер Google - единственный, о котором у меня есть личный опыт, поэтому я не уверен, является ли он лучшим из доступных. Возможно, другие люди могут порекомендовать другие парсеры?

1 голос
/ 27 июня 2009

«Стандартный» способ обработки XML в Javascript - это использование одного или нескольких стандартных или широко доступных API. Наиболее распространенные API для этого:

  • Объект DOMParser, позволяет анализировать XML-строку в структуре DOM
  • Объект XMLSerializer, сериализует структуру DOM в строку XML
  • Объект XSLTProcessor, включает обработку XSLT
  • Объект XMLHttpRequest, для отправки XML по проводам

Все перечисленные объекты доступны во всех современных (не IE) веб-браузерах. К счастью, в IE также были реализации этих функциональных возможностей, так как с тех пор (ну, начиная с IE5 или около того), у них просто были разные API. Поскольку упомянутые выше объекты недоступны в IE, было бы возможно реализовать их, также как и проекты Ample SDK и Sarissa , возможно, некоторые другие тоже.

Например, посмотрите, как может выглядеть код, который включает кросс-браузерный DOMParser:

if (!window.DOMParser) {
    var cDOMParser = function(){};
    cDOMParser.prototype.baseURI = null;
    cDOMParser.prototype.parseFromString = function(sXml, sMime) {
        var oDocument   = new ActiveXObject("Microsoft.XMLDOM");
        oDocument.async         = false;
        oDocument.validateOnParse   = false;
        oDocument.loadXML(sXml);

        return oDocument;
    };
    window.DOMParser = cDOMParser;
};
1 голос
/ 27 июня 2009

используйте учебники на w3schools.com . Они показывают, как работать с различными браузерами

например. (фрагмент)

try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(txt);
  return xmlDoc;
  }
catch(e)
  {
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(txt,"text/xml");
  return xmlDoc;
  }

Кроме того, просто чтобы ответить на ваш прямой вопрос. Это стандартный способ (в приведенном выше фрагменте он находится в блоке catch), но Internet Explorer не поддерживает стандартный способ .... поэтому вы застряли на чем-то похожем на

0 голосов
/ 27 июня 2009

Простым подходом было бы преобразование XML в формат JSON. (Google "xml to json" для нескольких вариантов.) Если возможно, я бы рекомендовал преобразовать в JSON на стороне сервера. Он более компактен, чем XML, что приводит к сокращению времени загрузки. Кроме того, он намного менее трудоемкий для анализа, поэтому он будет работать быстрее на стороне клиента.

Обратите внимание, что если вы работаете с небольшими объемами содержимого XML, разница будет незначительной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...