Преобразование XML в JSON и вывод в HTML с jQuery - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь проверить идею, которая у меня была, но с помощью этого сценария XML до JSON: https://github.com/sergeyt/jQuery-xml2json

Но затем возьмите данные JSON и затем выведите это в HTML с jQuery.

До сих пор я был в состоянии загрузить данные правильно, и я могу console.log из JSON данных, которые оказываются чем-то вот так:

releases:
  $: {}
  matching_count: "698"
  returned_count: "50"
  latestModified: "1537876805"
  release: Array(50)
   0:
    $: {}
    id: "713"
    headline: "Eiger BioPharmaceuticals to Participate in Investor Conferences"
    released: "1537876800"
    releaseDate: "Tue, 25 Sep 2018 08:00:00 -0400"
    modified: "1537876805"
    modifiedDate: "Tue, 25 Sep 2018 08:00:05 -0400"
  1:
   $: {}
    id: "712"
    headline: "Communications industry innovator to speak at AMEC Global Summit"
    released: "1491400800"
    releaseDate: "Wed, 05 Apr 2017 10:00:00 -0400"
    modified: "1491400806"
    modifiedDate: "Wed, 05 Apr 2017 10:00:06 -0400"
...

Мой JS код, который у меня есть на данный момент, таков:

var ul = $("<ul>").appendTo("body");
$.ajax({
  url: "https://s3-us-west-2.amazonaws.com/s.cdpn.io/8689/list.xml",
  dataType: "xml",
  success: function(response) {
    json = $.xml2json(response);
    console.log(json);
    $(json).each(function(index, headline) {
      ul.append($(document.createElement("li")).text(headline));
    });
  }
});

Проблема в том, что когда он отдает, все, что возвращается, это [object Object] в одном li.

Итак, я знаю, что что-то делаю неправильно, но я не уверен, где и в какой момент мне нужно переключиться, чтобы получить данные, чтобы я мог отрендерить headline, releaseDate и т. д.

Я создал здесь Codepen: https://codepen.io/ultraloveninja/pen/YzPRjRw

Я читал, что мог бы нужно использовать jQuery.parseJSON, но после небольшого тестирования я получаю некоторые ошибки, поскольку он все еще входит в object.Object.

Я чувствую, что мне нужно еще немного углубиться, чтобы попасть в releases.release как-то с вот где все данные должны быть обработаны.

1 Ответ

1 голос
/ 20 января 2020

Ответ, который вы пытаетесь получить l oop, является объектом, представляющим документ xml. Для доступа к массиву релизов вы должны использовать json["#document"].releases.release

var ul = $("<ul>").appendTo("body");
$.ajax({
  url: "https://s3-us-west-2.amazonaws.com/s.cdpn.io/8689/list.xml",
  dataType: "xml",
  success: function(response) {
    json = $.xml2json(response);
    let release = json["#document"].releases.release
    $(release).each(function(index, headline) {
      ul.append($(document.createElement("li")).text(headline.headline));
    });
  }
});

Пример

...