Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 19. 10. 2009, 12:36:01 · Upravil/a: peta
Potreboval bych funkci, ktera prevede jednoduchy XML retezec na asociativni pole, objekt. Pokud mozno bez vestavenych XML funkci. Na to jsem nasel spoustu prikladu a prijde mi to slozite nacitat string pres XML funkce a pak to prevadet adi 50ti radkovou funkci na objekt. To bych mohl rovnou, ne?
<xml> <polozka> <0> <nazev>text1</nazev> <hodnota>text2</hodnota> </0> <1> <nazev>text3</nazev> <hodnota>text4</hodnota> </1> </polozka> <typ>text5</typ> </xml> xml = { 'polozka': {'0': { 'nazev': "text1"; 'hodnota': text2" }; '1': { 'nazev': "text3"; 'hodnota': text4" }; }; typ: "text5"; }; } Mate nekdo tip, jak na to? |
||
martindeveloper Profil |
#2 · Zasláno: 19. 10. 2009, 12:39:28 · Upravil/a: martindeveloper
Ou omlouvám se, neuvědomil jsem si že jsem v JS poradně. :)
EDIT: Co tohle http://www.kawa.net/works/js/xml/objtree-e.html ? |
||
Chamurappi Profil |
#3 · Zasláno: 19. 10. 2009, 12:39:47 · Upravil/a: Chamurappi
Reaguji na peta:
„<1>“ V XML nesmí název elementu začínat číslem. Má-li to XML skutečně jen takto jednoduchou strukturu, můžeš si názvy a hodnoty vytáhnout regulárním výrazem. K tebou právě doplněnému JSONu: Hledej převod XML do JSONu. Definice členů objektu se oddělují čárkou, ne středníkem. |
||
peta Profil |
#4 · Zasláno: 19. 10. 2009, 12:42:14
Chamurappi
Jo, v tom nevidim problem vytahnout hodnoty. Cisla bych nejak poresil, prizpusobil scriptu. Prozatim tam dokonce zadna nemamm, pouze v prikladu. Spis jsem pak premyslel, jakym zpusobem kontruovat objekt stromove orientovany. |
||
peta Profil |
#5 · Zasláno: 19. 10. 2009, 12:49:46 · Upravil/a: peta
martindeveloper
http://www.openjsan.org/doc/k/ka/kawasaki/XML/ObjTree/0.24/lib/XML/ObjTree.html var root; if ( window.DOMParser ) { var xmldom = new DOMParser(); // xmldom.async = false; // DOMParser is always sync-mode var dom = xmldom.parseFromString( xml, "application/xml" ); if ( ! dom ) return; root = dom.documentElement; } else if ( window.ActiveXObject ) { xmldom = new ActiveXObject('Microsoft.XMLDOM'); xmldom.async = false; xmldom.loadXML( xml ); root = xmldom.documentElement; ... o tom mluvim. on to veme pres vestaveny XML parser, ktery ti z toho udela klasicky DOM strom a pak na to pouzije dalsich 15k kodu jeste, ktere to predelaji na tu objekt. To mi prijde jako celkem neusporne. |
||
peta Profil |
#6 · Zasláno: 19. 10. 2009, 12:51:23
ale aspon vim, jak se pise to cislovani :)
A sample XML source: <?xml version="1.0" encoding="UTF-8"?> <family name="Kawasaki"> <father>Yasuhisa</father> <mother>Chizuko</mother> <children> <girl>Shiori</girl> <boy>Yusuke</boy> <boy>Kairi</boy> </children> </family> Its JavaScript object tree like JSON/E4X: { 'family': { '-name': 'Kawasaki', 'father': 'Yasuhisa', 'mother': 'Chizuko', 'children': { 'girl': 'Shiori' 'boy': [ 'Yusuke', 'Kairi' ] } } }; |
||
Chamurappi Profil |
#7 · Zasláno: 19. 10. 2009, 12:56:49
Reaguji na peta:
„To mi prijde jako celkem neusporne.“ Vždyť je to také XML. Jestli chceš něco úsporného, používej JSON. |
||
peta Profil |
#8 · Zasláno: 19. 10. 2009, 13:07:08
Chamurappi
Ve vetsine scriptu, co jsem o vikendu nasel to pracuje takto: 1. dom = new XMLparser; //IE/FF udela to DOM tree, kde se k tomu pristupuje pres parentChild a tak. 2. pak to prozenou asi 15k kodem, ktery prave pres parentChild to rozseka do objektu Coz dela i ten script od martindeveloper. A tomu bych se pokud mozno chtel vyhnout, delat to na 2x. Ledaze by to byla elegantni cesta, jak se vyhnout celemu kodu, ktery by mel treba 30k :) K cemu to? Napadla mne takova trosku silenost spojit strukturu stranek Plone s JS editorem. Mam stranku: <!-- moje xml info (autor, datum, nazev, ...) --> <html> <head>... A ted tam nalinkuji jednoduchy <script>, ktery aktivuji tlacitkem Edit nekde ve strance a ten prave precte XML informaci, zedituje stranku a po odeslani ulozi. CMS pak nepotrebuje jinou funkci nez SAVE / login. Vse ostatni uz si dela JS u uzivatele. Pro info jsem zvolil XML, protoze jsem myslel, ze to bude snadnejsi cesta, protoze PHP ma na to parser. Jenze jsem narazil, protoze JS z toho dela domTree, coz neci. |
||
peta Profil |
#9 · Zasláno: 19. 10. 2009, 13:10:45
Tak vidim, ze to mozna ulozim primo jako JS text object a pres eval prehodim na object. Mozna lepsi nez se zabyvat parserem. Ale kdyby to pak chtel nekdo importovat do lepsiho systemu, tak se potrapi :)
|
||
peta Profil |
#10 · Zasláno: 19. 10. 2009, 13:27:22
Tady je to pekne vysvetlene s DOM parserem
http://www.hiteshagrawal.com/javascript/javascript-parsing-xml-in-javascript |
||
peta Profil |
#11 · Zasláno: 19. 10. 2009, 13:51:15
|
||
tiso Profil |
#12 · Zasláno: 19. 10. 2009, 14:05:15
|
||
peta Profil |
#13 · Zasláno: 19. 10. 2009, 14:32:49
tiso
10 - tam je pekne ukazano, jak pracuje dom parser v kodu prikladu a ze se s tim pracuje dost neprijemne, pokud chces vypsat cely strom a mam pocit, ze i konkretni hodnotu. Ale jeste to promyslim. 11 - ze jsem nasel pekny clanek k JSON, ze to nezazdivam :) A diky tomu zvazuji to proste evalovat ze stringu jako JS objekt. |
||
tiso Profil |
#14 · Zasláno: 19. 10. 2009, 16:21:57
peta a aký si mal dôvod prečo si tie informácie v [#13] nenapísal priamo k tým odkazom? To si máme všetci domyslieť čo si tým myslel? V tom prípade to tu buď nepíš, alebo aj rozumnou formou vysvetli o čo ti ide.
|
||
peta Profil |
#15 · Zasláno: 19. 10. 2009, 18:18:08 · Upravil/a: peta
tiso Presne takyto pristup odhana uzivatelov fora :) Kd nechces, aby som ti to vysvetlovat, tak sa hupo nepytaj v #12.
|
||
tiso Profil |
#16 · Zasláno: 19. 10. 2009, 18:24:31
peta teraz neviem či si ma nepochopil, alebo nechápem ako to myslíš...
|
||
Chamurappi Profil |
#17 · Zasláno: 19. 10. 2009, 18:40:00 · Upravil/a: Chamurappi
Reaguji na peta:
„Presne takyto pristup odhana uzivatelov fora :)“ Přestaň pořád moralizovat, to ty jsi tady otravný hmyz. Pravidla hovoří jasně: Jestliže odpovídáte odkazem, uveďte prosím několika slovy, kam míří. |
||
Časová prodleva: 14 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0