Вход

Просмотр полной версии : Не могу найти ошибку в xml парсере.


maza_12345
25.04.2010, 12:33
Добрый день, я в этом деле новичок, поэтому прошу помощи у вас =)
в общем такая беда приключилась, пишу я парсер xml для сайта, вроде всё вывел но почему-то на выходе полно undefined и не как не могу от них избавицо =((
Вот код парсера:
Stage.scaleMode = "noScale";
Stage.align = "TL";
onResize = function () {
tf1._width = Stage.width/1;
};
Stage.addListener(this);
_root.createTextField("tf1",1,0,0,564,0);
with (tf1) {
selectable = true;//false
multiline = true;
textColor = 0x727272;
autoSize = true;
wordWrap = true;
html = true;
}

myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("main.xml");


myXML.onLoad = function(success) {
if (success == true) {
content = myXML.firstChild;
section = content.firstChild;
for (h=0; h<section.childNodes.length; h++) {
article = section.childNodes[h];
tf1.htmlText += '\t\t'+article.attributes.name+'\n';
var title = article.childNodes[0];
var anons = article.childNodes[1];
var body = article.childNodes[2];
var info = article.childNodes[3];
var rating = article.childNodes[4];
tf1.htmlText += ('\t\t\t'+title.firstChild.nodeValue+'\n \n'+anons.firstChild.nodeValue+'\n \n'+'\t\t'+info.attributes.creationDate+'\t\t\t'+info.attributes.author+'\t\t\t'+info.attributes.authorEmail+'\t\t\t'+rating.firstChild.nodeValue+'\n \n');
tf1.htmlText += ('\t\t\t'+pic.firstChild.nodeValue+'\n\n');

}
}
};

вот xml который парсю:
<?xml version="1.0" encoding="UTF-8"?>

<content>
<section name="topRated">



<topArticle>
<title><![CDATA[<a href="asfunction:_root.myXML.onLoad,tf1.htmlText +=body.firstChild.nodeValue">С. Лихачев Самое большое</a>]]></title>
<anons><![CDATA[А в чем самая большая цель жизни? Я думаю: увеличивать добро в окружающем нас. А добро – это прежде всего счастье всех людей. ]]></anons>
<body><![CDATA[Здесь полная новость]]></body>

<info creationDate="24.03.2010" author="Автор:Петр" authorEmail="E-mail:norths@mail.ru" />
<rating><![CDATA[Рейтинг: <a href="http://olrs.ru/index.php/konkursxml/rate/4/1/+1">+</a> 3 <a href="http://olrs.ru/index.php/konkursxml/rate/4/1/-1">-</a>]]></rating>
</topArticle>


<topArticle>
<title><![CDATA[Н. Гоголь. О ПОМОЩИ БЕДНЫМ (Из письма к А. О. С......ой) ]]></title>
<anons><![CDATA[...Обращаюсь к нападеньям вашим на глупость петербургской молодежи, которая затеяла подносить золотые венки и кубки чужеземным певцам и актрисам в то самое время, когда в России голодают
целиком губернии.]]></anons>
<body><![CDATA[Тут полная новость]]></body>
<info creationDate="27.03.2010" author="Автор:Глеб" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: <a href='http://olrs.ru/index.php/konkursxml/rate/13/1/+1'>+</a> 1 <a href='http://olrs.ru/index.php/konkursxml/rate/13/1/-1'>-</a>]]></rating>
</topArticle>


<topArticle>
<title><![CDATA[Ильин И. ]]></title>
<anons><![CDATA[Когда мне стукнуло восемь лет, бабушка подарила мне на елку красивую тетрадь в синем сафьянном переплете и сказала: “Вот тебе альбом, записывай в него все, что тебе покажется умным и хорошим; и пусть каждый из нас напишет тебе что-нибудь на память”... ]]></anons>
<body><![CDATA[Тут полная новость]]></body>
<info creationDate="27.03.2010" author="Автор:Глеб" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: <a href='http://olrs.ru/index.php/konkursxml/rate/14/1/+1'>+</a> 0 <a href='http://olrs.ru/index.php/konkursxml/rate/14/1/-1'>-</a>]]></rating>
</topArticle>


<topStoryName name="Расказы"/>


<topStory>
<title><![CDATA[Бабушка]]></title>
<anons><![CDATA[Просьбы внуков бабушка выполняла охотно, радуясь тому, что она, ещё, кому то нужна и на что то годна. Мне лестно сознавать, что я был её внуком. ]]></anons>
<body><![CDATA[Тут полная новость]]></body>
<info creationDate="27.03.2010" author="Автор:Андрей Баринов" authorEmail="E-mail:kidala77@mail.ru" />
<rating><![CDATA[Рейтинг: <a href='http://olrs.ru/index.php/konkursxml/rate/9/2/+1'>+</a> 11 <a href='http://olrs.ru/index.php/konkursxml/rate/9/2/-1'>-</a>]]></rating>
</topStory>


<topStory>
<title><![CDATA[Жизненная история.]]></title>
<anons><![CDATA[Мы жили в обычном каменном (кирпичном)доме на 60 квартир. Мне было 10
лет. Во дворе дома стояли деревянные двухэтажные сараи.]]></anons>
<body><![CDATA[Тут полная новость]]></body>
<info creationDate="27.03.2010" author="Автор:Осколков А. " authorEmail="E-mail:oskolkov_av@mail.ru" />
<rating><![CDATA[Рейтинг: <a href='http://olrs.ru/index.php/konkursxml/rate/16/2/+1'>+</a> 1 <a href='http://olrs.ru/index.php/konkursxml/rate/16/2/-1'>-</a>]]></rating>
</topStory>


<topStory>
<title><![CDATA[Андрей Платонов. Луговые мастера ]]></title>
<anons><![CDATA[Небольшая у нас река, а для лугов ядовитая. И название у
нее малое — Лесная Скважинка. Скважинкой она прозвана за то,
что омута в ней большие: старики сказывали, что мерили рыбаки
глубину деревом, так дерево ушло под воду...]]></anons>
<body><![CDATA[Тут полная новость]]></body>
<info creationDate="27.03.2010" author="Автор:Глеб" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: <a href='http://olrs.ru/index.php/konkursxml/rate/12/2/+1'>+</a> 0 <a href='http://olrs.ru/index.php/konkursxml/rate/12/2/-1'>-</a>]]></rating>
</topStory>



<topVerseName name="Стихотворения"/>


<topVerse>

<title><![CDATA[С. Есенин Весна ]]></title>
<anons><![CDATA[ Припадок кончен.
Грусть в опале.
Приемлю жизнь, как первый сон.
Вчера прочел я в "Капитале",
Что для поэтов -
Свой закон.]]></anons>
<body><![CDATA[Тут полная новость]]></body>
<info creationDate="27.03.2010" author="Автор:Глеб" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: <a href='http://olrs.ru/index.php/konkursxml/rate/11/4/+1'>+</a> 1 <a href='http://olrs.ru/index.php/konkursxml/rate/11/4/-1'>-</a>]]></rating>
</topVerse>



<topIllustrationName name="Илюстрации"/>


<topIllustration>
<title><![CDATA[Самое большое]]></title>
<pic><![CDATA[ <a href="http://olrs.ru/editor/uploads/images/illustrations/e0ced219d1596e6e764c1c957b494bbb.jpg"><img src="http://olrs.ru/editor/uploads/images/illustrations/200_e0ced219d1596e6e764c1c957b494bbb.jpg"></a> <BR><BR><BR>]]></pic>
<info creationDate="14.04.2010" author="Автор:Елена Чернова" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: 1]]></rating>
</topIllustration>


<topIllustration>
<title><![CDATA[O лишениях]]></title>
<pic><![CDATA[ <a href="http://olrs.ru/editor/uploads/images/illustrations/2a47e6d0ed2d195e9d33f65c59c79c19.jpg"><img src="http://olrs.ru/editor/uploads/images/illustrations/200_2a47e6d0ed2d195e9d33f65c59c79c19.jpg"></a> <BR><BR><BR>]]></pic>
<info creationDate="14.04.2010" author="Автор:Иван Фомин" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: 0]]></rating>
</topIllustration>


<topIllustration>
<title><![CDATA[O лишениях 2]]></title>
<pic><![CDATA[ <a href="http://olrs.ru/editor/uploads/images/illustrations/b509876f555a04fd4f5f1f4c7bf9e871.jpg"><img src="http://olrs.ru/editor/uploads/images/illustrations/200_b509876f555a04fd4f5f1f4c7bf9e871.jpg"></a> <BR><BR><BR>]]></pic>
<info creationDate="14.04.2010" author="Автор:Анжелика Радкевич" authorEmail="E-mail:9999933@mail.ru" />
<rating><![CDATA[Рейтинг: 0]]></rating>
</topIllustration>



</section>
</content>

помогите избавица от undefined, и ещо вопрос, есть ли возможность нод <body> вывести в всплывающие окно при нажатии на название новости? я так понял ето делается с помощью asfunction но не знаю как =))

Заранее благодарен за помощь.

udaaff
26.04.2010, 15:00
1. Весь html текст нужно складывать в строковую переменную, а не в htmlText сразу пихать. А в конце уже присвоить.
2. XML у вас неподходящую структуру имеет.
Узлы
<topStoryName name="Расказы"/>
<topVerseName name="Стихотворения"/>
<topIllustrationName name="Илюстрации"/>
должны быть родительскими узлами детей <topStory>, <topVerse>, <topIllustration>, соответственно. И <topArticle> тоже нужно в родителя засунуть по аналогии.
Причем разные блоки, например <topIllustration> и <topVerse>, у вас разные наборы детей содержат, а вы их пытаетесь обрабатывать одинаково.

и ещо вопрос, есть ли возможность нод <body> вывести в всплывающие окно при нажатии на название новости? я так понял ето делается с помощью asfunction но не знаю как =))
Это чушь вы написали:
<a href="asfunction:_root.myXML.onLoad,tf1.htmlText +=body.firstChild.nodeValue">
Смотрите пример по asfunction в хелпе.