Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Парсер XML на Jquery (https://javascript.ru/forum/events/50619-parser-xml-na-jquery.html)

Batyabest 04.10.2014 17:27

Парсер XML на Jquery
 
Здравствуйте.
Делаю парсер xml файла на jquery. Все затормозилось на одном моенте:
Вот кусок xml файла:

Код:

        <fail>
          <tip_fajla>план первого этажа в зеркальном отображении</tip_fajla>
          <type_nr>6</type_nr>
          <link_fajla>85_6_30201.jpg</link_fajla>
        </fail>
        <fail>
          <link_fajla_org>85_18_33290.jpg</link_fajla_org>
          <type_nr>18</type_nr>
          <link_fajla>85_18_33290.jpg</link_fajla>
          <tip_fajla>визуализация спереди большая</tip_fajla>
        </fail>
        <fail>
          <link_fajla_org>85_20_33291.jpg</link_fajla_org>
          <type_nr>20</type_nr>
          <link_fajla>85_20_33291.jpg</link_fajla>
          <tip_fajla>визуализация спереди в зеркальном отражении больша</tip_fajla>
        </fail>

Как видим несколько fail внутри одного блока, и нужно выцепить конкретный адрес картинки link_faila

Сам скрипт парсера в моем варианте выцепляет для всех одну и ту же картинку:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "fail.xml",
        dataType: "xml",
        success: xmlParser
    });
});



var globaltext
function xmlParser(xml) {

    $('#load').fadeOut();
	$find = $(xml).find('grupa_proektow[nazwanie=doma]'); // Вытаскиваем все объекты типа "Дома"

	$(xml).find("type_nr").each(function(i,elem) {
    if($(this).text() == 6) {
           var text = $(this).parent().find("link_fajla").text()
           globaltext = text;
        }

});
	
	// Производим поиск внутри категории "Дома"
    $find.find("proekt").each(function () {		
    $(".main").append('<div class="book"><div class="title"><strong>' + $(this).find("nazwanie_proekta").text() + '</strong></div><div class="foto"><a href=""><img src="' + globaltext + '"></a></div><div class="cubatura">Площадь ' + $(this).find("kubatura").text() + ' м<sup>2</sup></div><div class="date">Код проекта: ' + $(this).find("kod_proekta").text() + '</div></div>');
    $(".book").fadeIn(1000);

    });

$('img').attr({ width: 100 });

}

Batyabest 04.10.2014 18:03

Решил вопрос так:

var globaltext
function xmlParser(xml) {

    $('#load').fadeOut();
	$find = $(xml).find('grupa_proektow[nazwanie=doma]'); // Вытаскиваем все объекты типа "Дома"
	
	// Производим поиск внутри категории "Дома"
    $find.find("proekt").each(function () {		
		$(this).find("type_nr").each(function(i,elem) {
    if($(this).text() == 18) {
           var text = $(this).parent().find("link_fajla").text()
           globaltext = text;
        }

});
    $(".main").append('<div class="book"><div class="title"><strong>' + $(this).find("nazwanie_proekta").text() + '</strong></div><div class="foto"><a href=""><img src="' + globaltext + '"></a></div><div class="cubatura">Площадь ' + $(this).find("kubatura").text() + ' м<sup>2</sup></div><div class="date">Код проекта: ' + $(this).find("kod_proekta").text() + '</div></div>');
    $(".book").fadeIn(1000);

    });

$('img').attr({ width: 200 });

}

kostyanet 04.10.2014 19:07

Вообще не так все делается, но можно и так, по-колхозному.

В чем была проблема - не понял, у вас будет массив fail'ов в котором вроде есть какие-то id - type_nr


Часовой пояс GMT +3, время: 22:18.