Avatar billede tbresson Nybegynder
14. marts 2006 - 11:33 Der er 3 kommentarer

Sammenligning af data fra XML med en database

Hej.
Jeg har en XML fil, fx således:
<person>
<fname>a</fname>
<lname>1</lname>
<fname>b</fname>
<lname>2</lname>

<fname>c</fname>

<fname>d</fname>
<lname>4</lname>
</person>

Det er et tænkt eksempel for at vise mit problem. Tomme felter bliver ikke vist i min XML (og det er ikke noget jeg kan lave om). Dvs. en person uden efternavn (lname) vil således ikke have noget tag.

Jeg forsøger at scripte mig frem til at indhente oplysninger om en person (fname og lname), hvorefter når dataene er indhentet vil jeg bruge dem til at lave søgninger mod en database.

Problemet er, at jeg ikke ved hvornår en "person" er færdig defineret om man kan sige. Hvis mit loop kører alle NODES igennem vil jeg ikke vide hvornår én persons oplysninger er komplette, da nogen felter kan mangle.

Jeg har forsøgt mig ved at sige, at fname altid eksisterer (hvilket jeg ikke kan være 100% sikker på, men test dataene ser ud til det).

Laver jeg et loop hvor jeg samler data ind indtil jeg når et fname og behandler dataene inden jeg skriver den nye fname værdi ned i variablen, så går alting ok, indtil sidste post. Da der ikke findes en fname som allersidste post vil den ikke få de sidste data med.

Jeg er ikke særlig god til XML, så jeg tænkte om der måske var nogle smarte metoder eller egenskaber man kunne bruge til at hente oplysningerne ud af XML filen - måske bærer jeg mig forkert an.
Avatar billede arne_v Ekspert
14. marts 2006 - 13:28 #1
Hvilket programmerings sprog / XML komponent ?
Avatar billede tbresson Nybegynder
14. marts 2006 - 15:34 #2
Jeg laver det i ASP med XMLDOM (Microsoft.XMLDOM).
Avatar billede tbresson Nybegynder
15. marts 2006 - 12:55 #3
Jeg har løst problemet, hvis nogen vil vide det.

Før loopet:
NewEntry = false
FirstLine = true

Første del af XML filen er "fname":
select case objLst.item(i).nodeName
case "fname"
if FirstLine = false then
NewEntry = true
end if
FirstLine = false

Efter end select gjorde jeg således:
if (i = objLst.length-1) then
NewEntry = true
end if

if NewEntry = true then
' Her er en hel "enhed" fra XML filen samlet - lav ting her
NewEntry = false
end if
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