Przetwarzanie XML w jQuery

0

Witam,
Napisałem plik xml który ma mniej więcej taką budowę:

<root>
    <car>
        <mark>Mazda</mark>
        <models>
            <model>CX-5</model>
            <model>CX-7-</model>
            <model>6</model>
            <model>3</model>
        </models>
    </car>
    <car>
        <mark>Honda</mark>
        <models>
            <model>CR-V</model>
            <model>CR-Z-</model>
            <model>Civic</model>
            <model>Jazz</model>
        </models>
    </car>
</root>

Potrzebuję teraz z tego zrobić tablicę wielowymiarową w jQuery żeby wyglądało to mniej więcej tak przy wyświetlaniu:


var car = new Array();
alert(car[0]['model'][1]) // pojawi się CX-7
//lub
alert(car[0]['model']) // pojawi się CX-7,CX-5,6,3 w sensie ze będą po przecinku
alert(car[0]['mark']) // pojawi się Mazda to już mam zrobione


oczywiście budowę pliku xml można zmienić ale chodzi żeby to do tablicy zapisać w jQuery

Do tej pory mam tak zrobione:
```jquery
$.get(PATH_CARS, function(data){
        var cars = new Array();
        
        $(data).find('car').each(function(){
           
            var tmp = {
                mark: $('mark', this).text()
            };
            
            cars.push(tmp);
        });
        
        alert(cars[0]['mark']);
    });

Ale nie wiem jak teraz dodać do tego te modele
Bardzo proszę o pomoc i sugestię bo już siedzę nad tym cały dzień i nie wiem jak to zrobić :(

0

XML-a jako tako nie da się przedstawić jako prostej tablicy, ze względu na to, że elementy XML mogą oprócz wartości zawierać też atrybuty. Czyli generalnie XML może zawierać:

  • dzieci (+ ew. atrybuty)
  • wartość (+ ew. atrybuty)
    Jeżeli olałbyś atrybuty to JAKO TAKO można to zapisać w podobnej formie jak przestawiłeś. A nie lepiej Ci będzie operować na tym jak na DOM? Dla mnie to znacznie logiczniejsze niż taka tablica robiona na siłę z danych, które ciężko do tablicy wepchać.
0

Dla mnie to bez znaczenia ale np. jak z tego xml osiągnąć taki zapis że jak wprowadzę do input tekst np. Honda to pokażą mi się po przecinku wszystkie modele tej marki

0

Zrob cos ala mape, tzn:
mapa<marka, lista_modeli> i przy odwolaniu do konkretnej marki, zwroci Ci liste modeli, ktora mozesz obrabiac. Sprawdz czy cos takiego jest w jquery bo ja szczerze mowiac nie mam pojecia ;) (powinno byc).

0

aj chcę to jak najłatwiej zrobić. Aby efekt był takie że wpiszę w input jakąś markę to pokaże mi się string każdy model oddzielony przecinkiem. :)

1

Jeżeli możesz delikatnie zmodyfikować XML (na logiczniejszą moim zdaniem postać, ale ja przywykłem do aplikacji internetowych i HTML-a) to możesz bardzo prosto skakać po takim dokumencie przy pomocy jQuery. Prosty przykład: http://jsbin.com/ojelef/1/

0

Zrobiłem większa bazę marek samochodowych i istnieje jeden problem a mianowicie gdy marka jest dwuczłonowa to zwraca wszystkie modele wszystkich marek :( czyli wystąpienie takiego czegoś w xml:

<car mark="Alfa Romeo">
<models>
      <model>Giulietta Nuova</model>
      <model>MiTo</model>
</models>
</cars>

spowoduje że zostaną zwrócone inne modele od innych marek. Jest możliwość naprawienia tego ?

0

Poczytaj o selektorach CSS - będą Ci pomocne wiele razy w pracy z XML-em w ten sposób. O samym jQuery też wypadałoby coś wiedzieć. I o javascripcie.

$("car[mark='Alfa Romeo']");

1 użytkowników online, w tym zalogowanych: 0, gości: 1