Как я могу разделить список элементов XML и проанализировать его с помощью JavaScript в соответствии с датой узла? - PullRequest
0 голосов
/ 17 октября 2019

Пишите сейчас. Я работаю со следующим XML

<LIST>
 <DAY>

    <DATE>
     October 17th, 2019
    </DATE>

    <SONG>
        <SONGNAME>

        </SONGNAME>
        <ARTIST>

        </ARTIST>
        <LINK>

        </LINK>
        <ART>

        </ART>
    </SONG>

<SONG>
        <SONGNAME>

        </SONGNAME>
        <ARTIST>

        </ARTIST>
        <LINK>

        </LINK>
        <ART>

        </ART>
    </SONG>
<SONG>
        <SONGNAME>

        </SONGNAME>
        <ARTIST>

        </ARTIST>
        <LINK>

        </LINK>
        <ART>

        </ART>
    </SONG>
 </DAY>

</LIST>

По сути, я хочу только разобрать и составить список элементов с определенной даты. Идея заключалась в том, чтобы было опубликовано несколько песен, и я хочу получить все песни в списке на эту дату. Однако, кажется, что нет способа выбрать только список песен этого дня, используя xmlDoc.getElementsByTagName ("DAY"). У кого-нибудь есть предложение, которое я могу использовать для этого?

Является ли решение просто создавать разные XML для каждого дня? Это действительно не оптимально.

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

function getSongList(xml) {
  var x, i, xmlDoc, txt;
  xmlDoc = xml.responseXML;
  txt = "";
  z = xmlDoc.getElementsByTagName("DAY");


  for (i = 0; i< z.length; i++) {
    txt += "<a href='#'' class='list-group-item'>";
    txt += z[i].childNodes[1].childNodes[0].nodeValue;
    txt += " - ";
    txt += z[i].childNodes[1].childNodes[1].nodeValue;
    txt += "</a>";
  }
  document.getElementById("list").innerHTML = txt;
}

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Если вы используете Node, вы можете использовать - https://www.npmjs.com/package/xml-js, который преобразует его в JSON, который проще обрабатывать, используя только точечные обозначения. Единственная проблема, с которой я сталкиваюсь при таком подходе, заключается в том, что если этот процесс повторяется в течение короткого времени, тогда вы заметите небольшую задержку, поскольку это приведет к преобразованию одного нейтрального объекта платформы в другой. С другой стороны, если вы продолжаете использовать индексные числа для заполнения переменной txt, вам может быть трудно поддерживать ее после нескольких улучшений в будущем.

0 голосов
/ 18 октября 2019

Чтобы получить дочерние элементы вызова getElementsByTagName, вы просто делаете

x = xmlDoc.getElementsByTagName("DAY");

, а затем

z = x[0].getElementsByTagName("SONGNAME");

[0] необходимо.

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