Это самый быстрый способ разбить мой XML на объекты JavaScript с помощью jQuery? - PullRequest
5 голосов
/ 19 января 2011

У меня есть XML-файл, подобный следующему:

<content>
    <box>
        <var1>A1</var1>
        <var2>B1</var2>
        <var3>C1</var3>
        <var4>D1</var4>
    </box>
    <box>
        <var1>A2</var1>
        <var2>B2</var2>
        <var3>C2</var3>
        <var4>D2</var4>
    </box>
    <box>
        <var1>A3</var1>
        <var2>B3</var2>
        <var3>C3</var3>
        <var4>D3</var4>
    </box>
</content>

Он содержит 500 box элементов, которые мне нужно проанализировать в объектах JavaScript.Я использую этот код, который работает нормально, но я новичок и, возможно, я что-то упустил и хотел бы получить предложения, если есть лучший / более быстрый способ сделать это:

var app = {
    //...
    box: [],

    init: function (file) {
        var that = this;

        $.ajax({
            type: "GET",
            url: file,
            dataType: "xml",
            success: function (xml) {
                $("box", xml).each(function (i) {
                    var e = $(this);
                    that.box[i] = new Box(i, {
                        var1: e.children("var1").text(),
                        var2: e.children("var2").text(),
                        var3: e.children("var3").text(),
                        var4: e.children("var4").text()
                    });
                });
            }
        });
    },
    //...
};

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

Ответы [ 3 ]

3 голосов
/ 19 января 2011

У меня есть источник XML, который я вынужден использовать .. Я конвертирую его в JSON на стороне клиента, а затем загружаю его .. намного проще ..

Tracker.loadCasesFromServer = function () {
$.ajax({
    type: 'GET',
    url: '/WAITING.CASES.XML',
    dataType: 'xml',
    success: function (data) {
            Tracker.cases = jQuery.parseJSON(xml2json(data, ""));
            Tracker.loadCasesToMap();
        },
        data: {},
        async: true
    });

};

Использовал конвертер XML2JSON, который можно найти здесь: http://www.thomasfrank.se/xml_to_json.html

Duncan

2 голосов
/ 19 января 2011

Используйте JSON , если это возможно.Таким образом, браузер выполнит синтаксический анализ за вас, и вам не нужно будет выполнять постобработку.

JSON с сервера

{"content":
  {"box": [
    {"var1": "A1",
     "var2": "B1",
     "var3": "C1",
     "var4": "D1"},
    {"var1": "A2",
     "var2": "B2",
     "var3": "C2",
     "var4": "D2"},
    {"var1": "A3",
     "var2": "B3",
     "var3": "C3",
     "var4": "D3"}]}}

Клиент JavaScript

var app = {
    //...
    box: [],

    init: function (file) {
        var that = this;

        $.ajax({
            type: "GET",
            url: file,
            dataType: "json",
            success: function(result) {
              that.box = $.map(result.content.box, function(box, i) {
                return new Box(i, box);
              });
            }
        });
    },
    //...
};
0 голосов
/ 19 января 2011

Вы можете использовать встроенную поддержку браузера XML, которая, я думаю, будет быстрой.Однако это варьируется среди браузеров, например (Firefox: DOMParser , IE: XMLDOM ..).

Таким образом, вместо того, чтобы просто продолжать и вручную обрабатывать все браузеры, вы можете использовать что-то вроде этого https://sites.google.com/a/van-steenbeek.net/archive/explorer_domparser_parsefromstring

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