| Autor | Zpráva | ||
|---|---|---|---|
| lolkohrad Profil * |
#1 · Zasláno: 26. 10. 2014, 11:26:33
ahoj, prepisuju jednu aplikaci z javy do Javascriptu a protoze s JS nemam tolik zkusenosti, potreboval bych poradit.
Vytvoril jsem si parser na parsovani tagu XML. V nasledujici fci by mi melo do pole vypsat vsechny obsahy tagu, ktery mu predam v parametru, ale kdyz kod spustim, tak mi to vypise v konkretnim pripade cislo 83, tedy pocet prvku v poli a nedokazi nijak jinak pole vypsat. Muzete mi pomoci, jak mam fci upravit, aby mi to vracelo cele pole a vypsalo na obrazovku? Parser.poleTagu = function(xml, tag){
try {
var pole = new Array();
while(true){
var x = xml.indexOf("<"+tag+">");
var y = xml.indexOf("</"+tag+">");
x = x+2+tag.length;
if(x > -1 && y > -1){
var apole = pole.push(xml.substring(x, y));
console.log("promenna apole nacteno");
xml = xml.substring(y+3+tag.length);
} else break;
}
return apole;
} catch (e) {
//Fce.err(e);
return "Ne";
};
}; |
||
| Jan Tvrdík Profil |
#2 · Zasláno: 26. 10. 2014, 12:22:07
lolkohrad:
„Vytvoril jsem si parser na parsovani tagu XML.“ Proč jsi nepoužil vestavěný DOMParser? „aby mi to vracelo cele pole“ Místo return apole tam zřejmě má být return pole. Proměnná apole je úplně zbytečná.
„vypsalo na obrazovku?“ Proč by ta funkce měla něco vypisovat? |
||
| Joker Profil |
lolkohrad:
Hodnota z pole se v JS vypíše úplně normálně, pole[index]. Řetězcové indexy jsou přístupné i objektově jako atributy pole:
var pole = new Array(); pole["foo"] = 2; alert(pole.foo); // 2 Pokud jde o vrácení pole, tam hlavní problém je, že metoda to pole nevrací. Nevrací se pole, ale apole, což je (chybně pojmenované) číslo (de facto je to pole.length, pokud se alespoň jednou vleze do toho if-u, jinak je to undefined).
Jinak bez ohledu na znalosti JS je to podle mě špatně z obecně programátorského hlediska. • Vynechám způsob zpracování chyb (předpokládám, že to je jen dočasné řešení během ladění). • Pro neexistující tag to vrátí undefined. • Podmínka x > -1 nemá žádný smysl, protože hodnota x ve chvíli té podmínky nemůže být nižší, než 1.
• V podstatě ta metoda jen počítá koncové značky daného tagu, Parser.poleTagu('</foo></foo></foo></foo>', 'foo'); vrátí 4.
• Nijak se nekontroluje, jestli vstup je vůbec XML (viz předchozí bod). • Celé „zpracování“ XML je hodně naivní, nepočítá s atributy, ani se zanořováním značek. Použil bych parser, jak radí už [#2] Jan Tvrdík |
||
| lolkohrad Profil * |
#4 · Zasláno: 26. 10. 2014, 13:22:33
moc dekuji za prispevky,
na domparser kouknu, ale pro me ucely staci toto jednoduche reseni. |
||
|
Časová prodleva: 12 let
|
|||
0