Avatar billede hitze Nybegynder
13. september 2003 - 00:19 Der er 8 kommentarer og
1 løsning

Ignorering af childnodes

Jeg har en stump kode i XML som jeg skal have hakket i småstykker til implementering på i asp-script.

  <?xml version="1.0" encoding="ISO-8859-1" ?>
  ...
  <event id="180138">
  Kursus 1
  <date>2003-09-24 16:00:00.0</date>
  <participant id="938">
  Hans Jensen
  <moede id="173">Deltager</moede>
  <moede id="46">Deltager</moede>
  </participant>
  <participant id="936">
  Gorm Larsen
  <moede id="173">Deltager</moede>
  </participant>
  <participant id="671">
  Svend Nielsen
  </participant>
  </event>
  ...

Som det ses anvendes nogle nodes til at indeholde data, mens samtidig kan de altså også indeholde childnodes. Antallet af childnodes til den kategori der volder problemer - "moede" - kan variere fra 0 til uendeligt.

Jeg skal have plukket værdien af <participant> ud for alle deltagere, men støder ind i et problem ved brug af nedenstående kode, nemlig at den for de deltagere der har tilmeldt sig møder, så napper koden alle værdier af childs med, hvilket ikke er meningen.

Det ønskede output skal egentlig bare være:
Kursus 1 (2003-09-24 16:00:00.0)
Hans Jensen
Gorm Larsen
Svend Nielsen

men tager sig desværre ud som følger:
Kursus 1 (2003-09-24 16:00:00.0)
Hans Jensen Deltager Deltager
Gorm Larsen Deltager
Svend Nielsen
osv.

Værdierne fra <participant> kalder jeg i et loop som følger med følgende:

strPart = participants.selectSingleNode("participant").text

Jeg VED det er i syntaksen på denne det er galt, men efter flere dages higen og søgen i XML dokumentation på en nem måde at ignorere childs på, har jeg ikke fundet noget. removechild er i mine øjne for omstændigt...

Hjælp ønskes!
Avatar billede Slettet bruger
13. september 2003 - 00:33 #1
Hejsa - her kommer hjælpen:

Hvis du ved at deltagerens navn altid er det første i <participant> elementet, og at der kun er en "id" attribut, skulle du kunne gøre flg.:

strPart = participants.selectSingleNode("participant").childNodes[1].text

- den select'er childNode nr. 2 (childNodes er 0-baseret - [0] er "id" attributten).

Hvis du ikke kan regne med ovenstående, må du lige lægge en kommentar - så laver jeg en mere robust løsning til dig.

/CS
Avatar billede hitze Nybegynder
13. september 2003 - 08:51 #2
Det er nok i den rigtige retning, men jeg KAN faktisk ikke være 100% sikker på ar at id er eneste childnode. Derfor er en mere robust løsning at foretrække :-)
Avatar billede thor.ostergaard Nybegynder
13. september 2003 - 08:55 #3
Kan man ikke også lægge det ind i xpath'en sådan her:
strPart = participants.selectSingleNode("participant/text()").text

Har testet det i xslt, hvor det ser ud til at virke, men har ikke testet det i DOM.
Avatar billede hitze Nybegynder
13. september 2003 - 09:26 #4
Det skal være DOM, skal lige teste selv...
Avatar billede hitze Nybegynder
15. september 2003 - 07:42 #5
Nedenstående virker i DOM

strPart = participants.selectSingleNode("participant").childnodes(0).text

Skriv lige et svar, thor, så du kan få dine points :-)
Avatar billede thor.ostergaard Nybegynder
15. september 2003 - 07:57 #6
Er det ikke greystate der skal have point?
Avatar billede hitze Nybegynder
15. september 2003 - 08:00 #7
Jo, thor - det er stadig tidligt på dagen, så....

Greystate - skriv lige svar.
Avatar billede Slettet bruger
15. september 2003 - 09:06 #8
Der var det... :-)

/CS
Avatar billede hitze Nybegynder
15. september 2003 - 09:21 #9
Fino - takker for hjælpen!
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
Kurser inden for grundlæggende programmering

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