Разобрать удаленный (и переменный) XML-файл в массив с помощью jQuery

0

Я полный noob для JavaScript и jQuery (начал учиться вчера), но я уже нахожу его очень простым в использовании, настолько интуитивным! :)

Итак, мне нужно разобрать XML файл (который будет наплевать на удаленный PHP файл в зависимости от запроса, который я отправляю), и поместить его в массив, который я позже смогу использовать для рисования диаграмм и т.д.

Трюк здесь заключается в том, что XML файл будет иметь другую структуру и категории в зависимости от запроса, поэтому мне нужен своего рода "универсальный" парсер.

Единственное, что я могу контролировать, это то, что все базовые элементы будут называться "item", но категории внутри каждого элемента будут меняться в зависимости от запроса, который будет изменен пользователем во время выполнения.

Структура всегда будет выглядеть так:

<results>
 <item>
  <variable1>value1</variable1>
  <variable2>value2</variable2>
  <variable3>value3</variable3>
  <variable4>value4</variable4>
  <variable5>value5</variable5>
 </item>
 <item>
  <variable1>value6</variable1>
  <variable2>value7</variable2>
  <variable3>value8</variable3>
  <variable4>value9</variable4>
  <variable5>value10</variable5>
 </item>
</results>

И я хотел бы иметь такой массив:

results[0].variable1 = value1
results[0].variable2 = value2
results[0].variable3 = value3
results[0].variable4 = value4
results[0].variable5 = value5

results[1].variable1 = value6
results[1].variable2 = value7
results[1].variable3 = value8
results[1].variable4 = value9
results[1].variable5 = value10

Но, как я уже сказал, я могу гарантировать только имя "item". Имена переменных будут переменными в каждом случае.

Какие-либо предложения?

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

  • 0
    Мое предложение было бы проверить документацию;) api.jquery.com/jQuery.parseXML
Теги:
arrays

1 ответ

0

Попробуй это,

var arr={};// Object if you want an array then use=> var arr=[];
$('item').each(function(index,value){
    var data={};
    $(this).find('*').each(function(i,v){
      data[$(this).prop('tagName')]=$(this).text();
    });
    arr[index]=data;
})
console.log(arr);

скрипка

  • 0
    Эй, спасибо тебе за это. Я возился с этим, и мне удалось заставить его работать. Однако я не сталкиваюсь с ОЧЕНЬ странной проблемой: в зависимости от того, насколько «длинным» будет запрос, функция ajax будет выполнена успешно или нет. В частности, если запрос имеет по крайней мере 14 элементов, он будет работать. Но менее того, успешная функция не срабатывает ?? Я посмотрел на XML, сгенерированный PHP-скриптом, и он IDENTICAL во всех случаях, кроме количества элементов. Все, что я могу придумать, это время, которое требуется PHP-скрипту, чтобы ответить ... есть идеи, почему он может не работать, если время меньше 10 секунд?
  • 0
    Еще немного понимания ошибки ... глядя на вкладку Chrome Console, кажется, выдается ошибка 500 Internal Server. Однако, как я указал, XML-файл идентичен рабочему ... единственное различие заключается в количестве элементов / времени, которое требуется для запуска ... которое в этом случае является НИЖЕ, чем раньше. Есть идеи??

Ещё вопросы

Сообщество Overcoder
Наверх
Меню