Er det her en lovlig xml-fil? Jeg ved godt jeg mangler headeren, men det er den der <Request>-ting jeg spørger om. Den starter med en "<Request>" men længere inde i niveauer'ne kommer den en "<Request>" til? Er det lovligt ifølge xml-standarden?
Jeg er interesseret i hvordan en parser fungerer da jeg måske skal bruge denne teknologi til noget andet og måske skal skrive min egen parser til det projekt jeg har gang i. Derefter er jeg interesseret i hvordan de adskiller hvilken "</Request>" de skal have fat i når parseren "piller" data ud.
Ja, det er fuldt lovligt. Dog er det normalt konventionen at alle tags skrives med små bogstaver. Altså vil man normalt kalde det <request> og ikke <Request>. Det gælder alle tags. Når man skriver en XML-parser er man ikke nødvendigvis interesseret i direkte at skelne mellem det to request tags. Det kommer selvfølgelig an på opgaven, men man ville nok vælge at lave en rekursiv struktur at parse til som afspejlede strukturen på XML'en i stedet for specifikt at handle en 'indre' og en 'ydre' <request>. Der kan jo igen være flere request-tags inde i det inderste, du har skrevet...
Det jeg er ude efter er hvordan man eventuelt kunne håndtere tag-data inde i tag-data. Som det er nu er den nu nem nok at håndtere, også selv om der er tags ved samme navn under hinanden.
Men hvad med dette her så? Den kan jeg ikke lige greje. :)
corex: Nu kan jeg ikke helt gennemskue hvilket niveau vi snakker om at lave en parser på, så måske skal du uddybe om du vil bruge sådan noget som XSLT eller om du vil skrive det selv fra bunden eller næsten fra bunden med eksempelvis SAX (som er event-dreven). Konkret ville jeg hvis jeg skulle programmere en parser specielt til dette sprog benytte mig af XML's smukke stak-struktur og bruge en stak til at hold styr på hvilket tag der var sidst åbnet. Der skal så være en klasse for hver type tag (eller én klasse med et tag-name field, alt efter hvad anvendelsen er og hvor generelt, det skal være). Hvert tag-object kan så have en liste over børn. Når et tag åbnes tilføjer man det så til child-listen på det øverste element i stakken og pusher object svarende til det åbnede tag på stakken og når det lukkes, popper man det så fra stakken igen (på grund af XML's struktur vil det altid være det øverste element på denne stak, der svarer til det tag, der lukkes). Den træstruktur, du får ud af det, skulle være temmelig ligefrem at arbejde med...
Sådan noget kan eksempelvis laves med SAX (Simple API for XML). SAX var oprindeligt kun et Java API, men det findes efterhånden til de fleste sprog. SAX fortæller hvornår der åbnes og lukkes tags og man kan så hive data ud om disse tags (attributter og tekst), og resten skal man så stort set selv programmere. Det giver parsere som performer særdeles godt.
Hold da fast. Jeg havde helt glemt denne her. Opgaven er løst for længe siden. Jeg skrev min egen parsen. Sorry guys.
/CoRex
Synes godt om
Ny brugerNybegynder
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.