PDA

Просмотр полной версии : pomogite s XML


Weax
03.07.2004, 11:12
vot delaju nekij prognoz pogody na flashe, dlia etogo nado sparsit takoj xml fail: http://xoap.weather.com/weather/local/LHXX0005?dayf=10&link=xoap&unit=m&prod=xoap&par=1005319491&key=df4db86fae350efe0570e6465403d92c

v princype s xml pocti dela ne imel i ne ocen predstavliaju kak sdelat na flashe ctob iz Node'a <dnam>Vilnius, Lithuania</dnam> delalas ctoto vrode var city = "Vilnius, Lithuania";
ctoby dopustim iz <day d="0" t="Saturday" dt="Jul 3"> avtomaticeski bralsia attribute "Saturday" i data "Jul 3" tak ctob eto mozno bylo by potom vyvesti primerno tak:
var d0_name = "Saturday";
var d0_date = "Jul 3";
dlia posledujushej zagonki v raznyje texfieldy, perevoda na drugoj jazyk i dalnejshix obrabotkax.

mozet ktonibud pokazal by primerik s odnim dniom a ja by peredelal pod ostalnyje 10 dnej prognoza pogody.

FreeLander
03.07.2004, 18:36
ну конечно весь твой хмл парсить я не буду, но пару советов, если интересует:

пихай данные, характеризующие твои объекты, не как дочерние ветки, а в виде аттрибутов объекта:

вместо
<head>
<locale>en_US</locale>
<form>MEDIUM</form>
<ut>C</ut>
<ud>km</ud>
<us>km/h</us>
<up>mb</up>
<ur>mm</ur>
</head>
<loc id="LHXX0005">
<dnam>Vilnius, Lithuania</dnam>
<tm>4:35 PM</tm>
<lat>54.63</lat>
<lon>25.28</lon>
<sunr>4:49 AM</sunr>
<suns>9:57 PM</suns>
<zone>3</zone>
</loc>
<head locale="en_US" form="MEDIUM" ut="C" ud="km" us="km" up="mb" ur="mm"/>
<loc id="LHXX0005" dnam="Vilnius, Lithuania" lat="54.63" lon="25.28" sunr="4:49 AM" suns="9:57 PM" zone="3"/>

так их легче доставать оттуда.
вот пример:

Dindin
04.07.2004, 02:28
Э-э-э, Фрилэндер. Невнимательно ты XML читал :):)
This document is intended only for use by authorized licensees of The Weather Channel. Unauthorized use is prohibited. Copyright 1995-2002, The Weather Channel Enterprises, Inc. All Rights Reserved.
То есть, похоже на то, что формируется эта бяка - где-то на стороне, а челу её просто разобрать на части надо. Можно так:url = 'http://www.yourxmldomain.smp/sample.xml';
xmlEl = new XML();
xmlEl.load(url);
dataObj = {d:null, dname:null, date:null};
while (xmlEl != null) {
if (xmlElt.nodeName == "day") {
dataObj.d = xmlElt.attributes.d;
dataObj.dname = xmlElt.attributes.t;
dataObj.date = xmlElt.attributes.dt;
// проверка текущго элемента
//<day d="0" t="Saturday" dt="Jul 3">
}
//=================================================================
if (xmlElt.firstChild != null) {
// "Если есть дети..."
xmlElt = xmlElt.firstChild;
// Переходим на первого ребенка
} else {
// "Иначе..." ( то есть детей нету )
if (xmlElt.nextSibling != null) {
// "Если есть брат..."
xmlElt = xmlElt.nextSibling;
// "то переходим на него"
} else {
//"Иначе..." (то есть и братьев нету тоже)
xmlElt = xmlElt.parentNode.nextSibling;
// переходим на родителя и затем переходим на брата.
}
}
}

Weax
05.07.2004, 02:42
Dindin spasibo, kakraz eto mne i nado, toka ctoto on ne rabotajet.. gdeto voznikajet oshybka v while i visnet flash player (beskonecnyj cikl)

esio vopros kak mne vyvesti dataObj.d v text field? prosto dataObj.d napisat tam gde var v properties ili net?

Weax
05.07.2004, 03:27
i voobshe cegoto ne valit eta sistema s if (xmlElt.nodeName == "day") mozet ja ctoto ne tak delaju..

Dindin
05.07.2004, 09:37
Вот тебе разбор ХМЛ и отрисовка дерева

Weax
05.07.2004, 15:18
gde:)) ?

Dindin
05.07.2004, 18:08
Ой =)