Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.03.2015, 18:08
Новичок на форуме
Отправить личное сообщение для idib.js Посмотреть профиль Найти все сообщения от idib.js
 
Регистрация: 05.03.2015
Сообщений: 1

Парсинг xml со сложной структурой и зависимостью от содержания
здравствуйте форумчане
я совсем новичок могу сказать что знаю с/с++, java и другие языки для pc на jq только копировал уже готовые скрипты ну на сколько разобрался так что не ругайте
после клика должен от паристся xml
в xml структуре мы сначала заходим в start узнаем с чего можно начать
и потом с помощью великого рандом пыгаем как в примере в start_0
потом в start_1 или start_2 и так далее
походу мы достаем текст и добавляем его в #text_class
скрипт не работает можете помочь его оживить или порекомендовать как нибудь по другому это реализовать

заранее спасибо

вот xml
<?xml version="1.0" encoding="utf-8" ?>
<page>
	<start>
		<ligament>
			start_0
		</ligament>
	</start>
	<start_0>
		<ligament>
			start_1
			start_2
		</ligament>
		<text>
			сначала это
		</text>
	</start_0>
	<start_1>
		<ligament>
			Null
		</ligament>
		<text>
			только началось и законцилость
		</text>
		</body>
	</start_1>
	<start_2>
		<ligament>
			start_3
			start_4
		</ligament>
		<text>
			а потом вариант 1 @NAME@ 
		</text>
	</start_2>
	<start_3>
		<ligament>
			start_4
		</ligament>
		<text>
			а можетбыть и 2
		</text>
	</start_3>
	<start_4>
		<ligament>
			Null
		</ligament>
		<text>
			а потом вариант 3
		</text>
	</start_4>
</page>

вот js
function lala(){ //функция запускается по клику 
//..................
        generet();
	xmlParser();
}

function generet()
{
	$.ajax({
        type: "GET",
        url: "xml/text.xml",
        dataType: "xml",
        success: xmlParser
    });
}

function xmlParser(xml) {
    $('#load').fadeOut();
	var next;
	$(xml).find("start").each(function () {
		next = next_text($(this).find("ligament").text());
	});
	while(next != "Null"){
		$("#text_class").append(textt($(xml).find(next).find("text").text()));
		next = next_text($(xml).find(next).find("ligament").text());
		$("next").fadeIn(1000);
	}
	
}

function next_text(input){
	arr = input.split("\n ");
	return arr[Math.floor(Math.random()*arr.length)];
}

function textt(input)
{
	return replace(new RegExp("@NAME@",'g'),name);
}

Последний раз редактировалось idib.js, 05.03.2015 в 18:11.
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2015, 22:57
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну и шляпа... А без XML никак? Есть же няшный JSON.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2015, 07:50
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Зачем тебе разные теги start,start_1,start_2? Я вижу что никакой полезной нагрузки в них нет,а наоборот. ты сначала находишь все теги старт .find("start") - 1 шт, а потому по всем найденным организуешь цикл .each, цикл из 1го элемента.....И в цикле записываешь в одну и ту же переменную новое значение. То есть на выходе в переменной next будет значение последней итерации. Это в си++ али java так делают?)
И только потом начнется еще один цикл while, тоже их 1 итерации. Его надо заменить на if и переместить внутрь цикла each

Пусть все будут просто start. Тогда будет работать. И вообще лучше json как сказали уже.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery парсинг XML ssaich jQuery 13 05.03.2015 03:43
Парсинг из xml Vasy Общие вопросы Javascript 19 13.03.2013 17:15
парсинг XML с параметрами javaScript-ом Sveta AJAX и COMET 5 22.10.2012 11:20
Парсинг XML в IE eternal AJAX и COMET 1 20.11.2011 01:25
не работает парсинг XML в IE Enxiro jQuery 6 25.08.2010 12:26