Парсинг 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); } |
Ну и шляпа... А без XML никак? Есть же няшный JSON.
|
Зачем тебе разные теги start,start_1,start_2? Я вижу что никакой полезной нагрузки в них нет,а наоборот. ты сначала находишь все теги старт .find("start") - 1 шт, а потому по всем найденным организуешь цикл .each, цикл из 1го элемента.....И в цикле записываешь в одну и ту же переменную новое значение. То есть на выходе в переменной next будет значение последней итерации. Это в си++ али java так делают?)
И только потом начнется еще один цикл while, тоже их 1 итерации. Его надо заменить на if и переместить внутрь цикла each Пусть все будут просто start. Тогда будет работать. И вообще лучше json как сказали уже. |
Часовой пояс GMT +3, время: 07:00. |