Avatar billede andersasp Nybegynder
23. september 2010 - 07:56 Der er 6 kommentarer

Udskrive værdier fra XML dokument

Hejsa,

Jeg har dette script som udskriver alle værdier fra et XML dokument, men kun i ét lag.. hvordan får jeg den til at udskrive laget under?

<%@ language="vbscript" %>
<% Option Explicit %>
<%
    Dim xmlDoc, root, success
    Set xmlDoc = Server.CreateObject("msxml2.DOMDocument")
    ' Allow the document to complete loading
    xmlDoc.async = False
    success = xmlDoc.Load(Server.MapPath("xml.xml"))

    If success = True Then
        Set root = xmlDoc.documentElement
        displayNode root
        Set root = Nothing
    End If
   
    Set xmlDoc = Nothing
Private Sub displayNode(ByVal node)
    Dim child, strName, strData
    strName = node.nodeName
    strData = node.Text
   
        Response.Write strName & ": " & left(strData,15) & "<br />"
       
    ' Check for child nodes
    If node.childNodes.length > 1 Then
        For Each child In node.childNodes
            displayNode child
        Next
    End If
End Sub
%>
Avatar billede tjens Nybegynder
23. september 2010 - 15:39 #1
Du har et recursivt kald af displayNode i bunden af scriptet, så det burde allerede gå ud i alle subnodes.

Jeg har testet det på min egen maskine ( tilrettet som .vbs fil og startet med kommando cscript fra command prompt), og der får jeg følgende output når jeg kører på disse testdata: http://www.w3schools.com/xml/cd_catalog.xml
CATALOG: Empire Burlesqu<br />
CD: Empire Burlesqu<br />
TITLE: Empire Burlesqu<br />
ARTIST: Bob Dylan<br />
COUNTRY: USA<br />
COMPANY: Columbia<br />
PRICE: 10.90<br />
YEAR: 1985<br />
CD: Hide your heart<br />
TITLE: Hide your heart<br />
ARTIST: Bonnie Tyler<br />
COUNTRY: UK<br />
COMPANY: CBS Records<br />
PRICE: 9.90<br />
YEAR: 1988<br />
CD: Greatest Hits D<br />
...
...

Du tester ikke på om det er en node type 3 inden du henter tekst, så derfor kommer der "uvedkommende" tekst på Catalog og CD

Kan du uddybe spørgsmålet, da jeg ikke er med på hvad problemet er?
Avatar billede tjens Nybegynder
23. september 2010 - 16:00 #2
Alternativ version af Sub'en
Private Sub displayNode(ByVal node, Byval tab)
    Dim child
   
    if node.nodeType = "3" Then
        wscript.echo tab & node.Text
    else   
        wscript.echo tab & node.nodeName
        ' Check for child nodes
        For Each child In node.childNodes
            displayNode child, tab&" - "
        Next
    End If
End Sub
giver følgend output
CATALOG
- CD
-  - TITLE
-  -  - Empire Burlesque
-  - ARTIST
-  -  - Bob Dylan
-  - COUNTRY
-  -  - USA
-  - COMPANY
-  -  - Columbia
-  - PRICE
-  -  - 10.90
-  - YEAR
-  -  - 1985
- CD
-  - TITLE
-  -  - Hide your heart
-  - ARTIST
-  -  - Bonnie Tyler
...
...
Avatar billede andersasp Nybegynder
23. september 2010 - 16:06 #3
Hej og tak for dit svar..

Mit problem er at jeg skal have denne data læst over i en database, og lige som det er nu, kommer det lag ikke med som skal jeg skal bruge

du kan se det her:
http://www.kfjobindex.dk/xml.xml

jeg skal bruge

<cv anonymity="true" read="100">
<headline>
<resume/>
<presentation>

Her er mit output:
http://www.kfjobindex.dk/read_xml.asp

håber det giver mening..


På forhånd tak
Avatar billede tjens Nybegynder
23. september 2010 - 16:11 #4
Det ligner da fortrolige data du har offentliggjort der.

Du må straks fjerne xml-filen og erstatte den med testdata.
Avatar billede tjens Nybegynder
23. september 2010 - 16:18 #5
Du kan få ideer til at navigere i XML-DOM nodes her:
http://www.w3schools.com/xml/xml_dom.asp
Avatar billede andersasp Nybegynder
23. september 2010 - 16:19 #6
Den er hermed blevet slettet, det var blot for at vise hvor mit problem lå!

men jeg vil kigge på artiklen!

Tak
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