Avatar billede unknown_someone Juniormester
05. januar 2005 - 23:11 Der er 10 kommentarer og
1 løsning

Læsning fra xml

jeg har følgende xml-fil

<?xml version="1.0" encoding="ISO-8859-1"?>
<books>
    <book id="1">
        bog1
    </book>
    <book id="2">
        bog2
    </book>
    <book id="3">
        bog3
    </book>
    <book id="4">
        bog4
    </book>
    <book id="5">
        bog5
    </book>
</books>

Den vil jeg gerne læse fra vha ASP, og det er ikke et problem jeg kan bare ikke finde ud af at gøre det så hensigstmæssigt som muligt. Det jeg gerne vil er at udskrive værdien fra book-noden hvor id er lig X på bestemte steder på siden.

Jeg vil gerne kunne skrive fx dette hvor som helst på siden efter jeg har kaldt min xml ;

<%
Response.Write XMLnode(4)
%>

Og så bliver den udskrivet hvor id er lig 4.

Nogen der kan klare den?
Avatar billede steen_hansen Forsker
05. januar 2005 - 23:20 #1
Jeg skal have lavet noget lignende, kigger lige med.
Avatar billede babz Nybegynder
05. januar 2005 - 23:25 #2
Jeg forstår vidst ikke spørgsmålet....
Du vil ikke benytte en selectSingleNode(Xpath)???
Avatar billede unknown_someone Juniormester
05. januar 2005 - 23:29 #3
babz >> det ved jeg ikke - for jeg har ikke kunnet få det til at fungere med Xpath. jeg er sådan set ligeglad hvordan jeg får fat i værdien - bare det fungere osv... :=

men hvis jeg har fx følgende;

Set objXML = Server.CreateObject("microsoft.XMLDOM")
objXML.async="false"
objXML.Load (Server.MapPath("constants/dk.xml"))
If not objXML.parseError.errorcode = 0 Then
  'noget
End If

'udskriv værdien fra id=4

Set objXML = Nothing

hvordan får jeg så udskrevet den med id=4?
Avatar billede babz Nybegynder
05. januar 2005 - 23:30 #4
Er id=4 et bestemt sted på siden...så det skal forstås således at id ændrer sig henover siden????
/Babz
Avatar billede unknown_someone Juniormester
05. januar 2005 - 23:31 #5
id ændrer sig hele tiden. Jeg skal kunne tage værdiet fra et hvilket som helst id ud hvor som helst på siden.
Avatar billede babz Nybegynder
05. januar 2005 - 23:33 #6
Godt så....
Jeg har noget kodesnask her der måske kan hjælpe....

'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
'ved at kalde SelectSingleNode metoden og give den
'nummeret p den pgldende uge.
Set objWeek = objXML.SelectSingleNode("/aar/uge[ugenr='" & strUgenr & "']")

/Babz
Avatar billede babz Nybegynder
05. januar 2005 - 23:35 #7
ORV....jeg glemte resten.....

-----------------
Dim strXML
strXML = server.MapPath("kalender.xml")
Dim strXSL
strXSL = server.MapPath("editDetail.xsl")
'strUgenr fortller hvilken uge vi har med at gre i XMLfilen
Dim strUgenr
strUgenr = Request.QueryString("ugeNr")

'St objRoot variablen til root-elementet af XMLfilen ved
'at kalde documentElement metoden af (XMLDOM)-objektet.
Set objRoot = objXML.documentElement

'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
'ved at kalde SelectSingleNode metoden og give den
'nummeret p den pgldende uge.
Set objWeek = objXML.SelectSingleNode("/aar/uge[ugenr='" & strUgenr & "']")
-------------------------
Lige nu har jeg så en knude <ugenr> der indeholder en værdi som du kan skrive ud med Response.Write objWeek.text

/Babz
Avatar billede babz Nybegynder
05. januar 2005 - 23:44 #8
Hvis jeg nu tog mig sammen og skrev lidt xpath der kunne bruges i dit eksempel ville vi skulle bruge noget lignende dette:

Set objRoot = objXML.documentElement
Set objBookId = objRoot.selectSingleNode("books[@id="4"]")

Eller noget i den stil...Det kan dog være nyttigt at undgå linjeskift i din xmlfil...i de felter hvor der er data.
Det gav mig store problemer...da min eller superlækre xpath ikke villel spille.

/Babz
Avatar billede unknown_someone Juniormester
05. januar 2005 - 23:48 #9
så lykkedes det - perfekt :-)

en anden hurtig ting - objXML.async="false" hvad gør den? Med det samme har du så forresten nogle links til hvor man kan læse mere om det og også gerne se eksempler - jeg kender www.w3schools.com men syntes ikke det er så let lige der?
Avatar billede unknown_someone Juniormester
06. januar 2005 - 00:11 #10
hov - glemte en ting. Hvis jeg nu spørger på et id der ikke findes får jeg en fejl - hvordan kan jeg fange at objBookId er tomt?
Avatar billede babz Nybegynder
06. januar 2005 - 09:50 #11
Du kan spørge om objektet er Nothing.
IF objID IS Nothing THEN

Eller noget i den stil.
Asyncronous fileloading bestemmer vidst nok om man kan begynde at gøre noget med filen hvis den ikke er læst helt ind.....altså hvis kun dele af den er læst ind.
Det vil jeg ikke hænges op på...da jeg ikke selv er super ASP nørd.
Jeg sidder selv i øjeblikket og koder lidt i blinde da jeg mangler et API til ASP.
Jeg koder i VIM...og der følger der ikke asp-hjælp med.

Apropos w3school brugte jeg flere dage på dårlig kode derfra.
Jeg vil godt advare mod at deres xml-eksempler stinker...da de kun kan køres fra MS IE.
De overholder på ingen måde w3c's standarder for XML eller XSLT.

Internet Explorer har det med at vise en masse lort...selv om der er fejl i det.

Råd:
Test dine sider med både Firefox og IE.

Ellers kan w3school bruges til en masse.....men lige her stinker de.

/Babz
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