Avatar billede pyroman Nybegynder
31. december 2003 - 00:55 Der er 8 kommentarer og
2 løsninger

XML: læse childNode uden fordømte arrays

Hej

Er det ikke muligt at læse en XML childNode ved at angive dens navn og ikke index???
Det er pissehamrende irriterende at man skal have en fast rækkefølge i childNodes for at kunne finde rundt i dem.
Eks.

msg = myXML.chat.msg;  //NEJ det er forbudt - røv!!!

msg = myXML.childNodes[0].chilNodes[1]; //Flot Helle - rigtigt - men skide besværligt...


Eller er denne smarte funktion virkelig ikke opfundet???

/Filip
Avatar billede pyroman Nybegynder
31. december 2003 - 00:56 #1
60 var måske lige lidt for meget... det er trods alt næsten kun et "ja" eller "nej"...
Avatar billede pyroman Nybegynder
31. december 2003 - 00:57 #2
giver 30 point... :)
Avatar billede barklund Nybegynder
31. december 2003 - 10:34 #3
Det er ikke muligt, nej - og det skyldes jo at childnodes ikke behøver unikke tags.

Derimod findes der firstChild, lastChild og lignende, så du kan også skrive:

msg = myXML.firstChild.firstChild.nextSibling;

Der findes en lille converter, der laver om til et objekt efter den struktur, som du ønsker, men jeg synes den er mere irriterende end anvendelig:

http://www.flashkit.com/movies/Scripting/XML/XML_to_O-Phil_Sco-4634/index.php

Den laver følgende xml:

<xml>
  <child attr="5">Tekst</child>
  <child attr="4" />
  <otherchild attr="3" />
</xml>

om til:

xml = new Object();
xml.child = new Array();
xml.child[0] = new Object();
xml.child[0].attr = 5;
xml.child[0]._value = "Tekst";
xml.child[1] = new Object();
xml.child[1].attr = 4;
xml.otherchild = new Object();
xml.otherchild.attr = 3;

Altså hvis det er flere childs med samme tag, bliver det til et array.

Og rene tekstnoder bliver deres parents "_value" attribut.
Avatar billede pyroman Nybegynder
31. december 2003 - 10:50 #4
OK - men det er altså lidt åndsvagt efter min mening - det tillader jo ikke at du kan lave nogle småfejl eller ændringer - som fx anden rækkefølge...
Men jeg tror jeg vil prøve at lave en funktion der søger efter en childNode og returnerer indexet - så kan man nemlig bruge det til noget...
Men tak for hjælpen barklund...
Avatar billede pyroman Nybegynder
31. december 2003 - 10:51 #5
Du må forresten godt lægge et svar så du kan få de 30 point... :)
Avatar billede barklund Nybegynder
31. december 2003 - 11:04 #6
Rækkefølgen er netop ligegyldig med LoadXML (som forklaret ovenfor) - indtil vi snakker childnodes med samme navn.
Avatar billede pyroman Nybegynder
31. december 2003 - 11:09 #7
Ja det kan jeg godt se - hmmm så er spørgsmålet så om det bliver nemmere med objecter. Det er godt nok en masse rod...
Avatar billede barklund Nybegynder
31. december 2003 - 11:19 #8
Men det er jo præcis det, som du efterlyser?
Avatar billede pyroman Nybegynder
31. december 2003 - 11:20 #9
ja - men ville bare ikke lave det hele om til objekter - men det kan vel blive nødt til... eller også skal man bare have lidt styr på sin XML...
Avatar billede barklund Nybegynder
31. december 2003 - 11:23 #10
Jamen xml er jo også objekter - bare anderledes indekseret...

Vi kan da godt lave en onLoad-handler, der manipulerer lidt med objektet og tilføjer den samme type referencer udover de øvrige - men det er en ganske omsiggribende affære - dog vil det vel tage mig en lille times tid at scripte ;)

Tark for points forresten...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester