2016-01-25 2 views
0

В настоящее время я пытаюсь разобрать и файл XML, который имеет следующий формат:Анализировать файл XML, который имеет уникальные элементы с помощью AJAX

<holidays> 
    <holiday1> text </holiday1> 
    <holiday2> text </holiday2> 
    <holiday3> text </holiday3> 
    <holiday4> text </holiday4> 
    ... 

со следующим кодом:

$.ajax({ 
    url: '<filename>', 
    dataType: 'xml', 
    success: xmlParser 
}); 

function xmlParser(xml) { 
    $('#load').fadeOut(); 
    $(xml).contents().each(function() { 
    $("#holidates").append('<p>' + $(this).text() + '</p>'); 
    }); 
    $(".dates").fadeIn(2000); 
} 

Ток выходной является:

<p>01/13/2016 02/02/2016 12/24/2015 12/24/2015 12/24/2015 12/29/2015 12/30/2015 11/23/2015 01/01/2016 01/26/2016 12/25/2015</p> 

я предпочел бы:

<p>01/13/2016</p> 
<p>02/02/2016</p> 
<p>12/24/2015</p> 
.... 

Есть ли способ достичь его без форматирования xml-файла? Файл является частью другой системы и требуется в указанном формате.

Большое спасибо.

+0

Файл xml не соответствует выходу ajax. Предполагается, что «текст» - это даты? – cvesters

+0

жаль, да 'текст' есть даты так гласили: 01/13/2016 02/02/2016 12/24/2015 .... –

ответ

0

С учетом ваших отзывов, проблема понятна. Вы берете текстовое значение корневого элемента. Это, однако, просто конкатенирует все текстовые элементы от его детей.

Я не профессионал, когда дело доходит до ajax, но идея состоит в том, чтобы выбрать теги «праздник» и запустить «каждый» на этом наборе.

Ваша структура XML делает это немного сложнее, чем должно быть из-за целых чисел в имени. Если вы уверены, что все теги «праздников» являются тегами «holidayx», вы можете просто взять всех детей.

$(xml).contents().find('holidays').children().each(function() { 
    $("#holidates").append('<p>' + $(this).text() + '</p>'); 
}); 

Я предлагаю попробовать что-то подобное.

Смежные вопросы