Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [prototype][js][xml] jak rozbić Xml z responseText
Forum PHP.pl > Forum > XML, AJAX
Maslav
Hej właśnie stawiam pierwsze kroki w ajax'ie przy użyciu prototype.

Skrypt który odpytuję zwraca mi takie dane
  1. <?xml version="1.0"?>
  2. <data>
  3.  <name>ASX</name>
  4.  <tag>asx</tag>
  5. </data>


Chciałbym móc wyciągnąć te wartości do zmiennej i wyświetlić poprzez .innerHTML. Niestety nie bardzo wiem jak to ugryźć.
mike
Konwersja XML do tablicy w JavaScript
Maslav
Dzięki!
mariuszn3
Zamiast konwertować XML do tablicy lepiej się naucz podstawowych funkcji i własności elementów DOM..
Do powyższego potrzebujesz skorzystać z funckcji getElementsByTagName i wartości nodeValue to wszystko.
Konwertując XML'a do tablicy i z niej pobierając dane odwalasz podwójną nieportrzebną robotę.
Seth
Nie ma co sie bawic w konwertowanie XMLa do tablicy. Wiem bo sam przez to przeszedlem. To samo z podcinaniem sie obsluga XMLa przez DOM.

Zamiast tego polecam Ci JSONa.
Jest to metoda na serializowanie obiektow/tablic w taki sposob aby pozniej moc odwolac sie do nich z JSa.

Zamiast XMLa, wypluwasz przez php sformatowany odpowiednie ciag znakow - JSON. Nastepnie za pomoca responseText, evaluujesz go do postaci zmiennej (zmienna = eval('(' + responseText + ')');.

Dzieki biblioteczce php, mozesz w bardzo latwy spsob zserialziwoac dowolna zmienna php do postaci takiego tekstu.
http://www.aurore.net/projects/php-json/


Naprawde, nei ma nic lepszego niz to. Oszczedzi Ci to sporo czasu i nerwow winksmiley.jpg

P.S.
Problem moze sie pojawic przy polskich znakach. Biblioteka ta obcina polskie znaki. Dlatego przed zakodwoaniem do postaci JSON, nalezy przekonwertowac tekst do UTF-8.
mariuszn3
Cytat(Seth @ 16.07.2006, 16:20 ) *
Nie ma co sie bawic w konwertowanie XMLa do tablicy. Wiem bo sam przez to przeszedlem. To samo z podcinaniem sie obsluga XMLa przez DOM.

Zamiast tego polecam Ci JSONa.
Jest to metoda na serializowanie obiektow/tablic w taki sposob aby pozniej moc odwolac sie do nich z JSa.

Zamiast XMLa, wypluwasz przez php sformatowany odpowiednie ciag znakow - JSON. Nastepnie za pomoca responseText, evaluujesz go do postaci zmiennej (zmienna = eval('(' + responseText + ')');.

Dzieki biblioteczce php, mozesz w bardzo latwy spsob zserialziwoac dowolna zmienna php do postaci takiego tekstu.
http://www.aurore.net/projects/php-json/
Naprawde, nei ma nic lepszego niz to. Oszczedzi Ci to sporo czasu i nerwow winksmiley.jpg

P.S.
Problem moze sie pojawic przy polskich znakach. Biblioteka ta obcina polskie znaki. Dlatego przed zakodwoaniem do postaci JSON, nalezy przekonwertowac tekst do UTF-8.

Pewnie, można i tak.. tylko tak się zastanawiam jeśli odpowiedzią z serwera jest fragment struktury dokumentu, który zamierzamy wimportować na stronę, to czy nie lepiej po prostu zostawić to jako XML (który automatycznie zostanie sczytany przez przeglądarkę do drzewa DOM i będzie to szybsze niż jakikolwiek eval) a następnie po prostu wimportować strukturę z dokumentu XML do dokumentu XHTML poprzez importNode..
W tym przypadku korzytanie JSON również wydaje mi się podejściem naokoło.
Zresztą nawet jeśli odpowiedzią ma być nie fragment struktury dokumentu, tylko jakaś krótka odpowiedź, wartość wyjęta z bazy danych.. wtedy przecież można to wyjąć za pomocą jednej funkcji DOM i znowuż JSON staje się tylko niepotrzebnym obciążeniem.
Myślę, że JSON ma sens głównie wtedy kiedy chcemy wysłać pewien algorytm do wykonania po stronie klienta, zresztą taka jest chyba główna idea JSON (?)
Maslav
Jeszcze raz dzięki za odpowiedzi. Najodpowiedniejszym rozwiązaniem odpowiadającym moim potrzebom będzie getElementsByTagName i nodeValue. Co do JSON'a, bardzo ciekawie wygląda i napewno świetnie działa ale ma wadę która jest jednoczesnie jego zaletą, od strony php wymaga instalacji modułu. Xml chyba jest na tą chwilę "najoptymalniejszym" rozwiązaniem. Pozdrawiam

http://www.quirksmode.org/blog/archives/20...jax_respon.html

Art apropo
mariuszn3
ooo.. cenny link.. dzięki. Choć dziwię się, że autor przy sposobie HTML Snippet nie wspomniał o importowaniu poprzez importNode co od razu eliminuje jedną z wymienionych niżej wad.. w komentarzach zaledwie jedna osoba wspomniała o tej możliwości...
Seth
Szczerze mowiac z przetwarzaniem XMLa mialem nieprzyjemnosci zwiazane z samym DOMem. Po prostu slabo go znam i nie moglem sie przekonac do pobierania nodow, parentow itd.

JSON byl dla mnie zbawieniem bo w koncu w prosty sposob moglem dostac sie do zmiennych.
A przy zagniezdzeniu danych jakie mialem do przetworzenia, wlasnie ta metoda wydala mi sie najlepsza i najczytelniejsza.

P.S.

Co do biblioteki to sa jeszcze klasy w php do konwertowania do JSONa np:
http://dev.splitbrain.org/reference/dokuwi...c/JSON.php.html
source: http://dev.splitbrain.org/reference/dokuwi...php.source.html
Maslav
Przepraszam, można zmienić zdanie?
Po tym jak zaplątałem się trochę w DOM'ie postanowiłem sprawdzić JSON'a i rzeczywiscie prostota zastosowania jest powalająca.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.