Avatar billede cstern Nybegynder
04. januar 2001 - 23:39 Der er 8 kommentarer og
2 løsninger

XML parser??

Er der nogen der har erfaring med XML? Jeg vil gerne benytte et XML input (ascii file) til at lægge data over i en database. Hvordan gøres dette i VB (ikke VBA)?. Jeg forudsætter at input data er tilgængelige så det er ikke den del jeg søger hjælp til.

Data kan f.eks. se sådan her ud:
<HEADER>
<DATATYPE>Register</DATATYPE>
<DATAVERSION>1.0</DATAVERSION>
<DATADATO>20010104</DATADATO>
</HEADER>
<DATA>
<ITEM>
<NO>1</NO>
<NAME>Alfred Nobel</NAME>
<FEATURE>Dynamittens opfinder</FEATURE>
</ITEM>
<ITEM>
<NO>2</NO>
<NAME>Stanley S. Cohen</NAME>
<FEATURE>En af gensplejsningens fædre</FEATURE>
</NAME>
</ITEM>
...osv
</DATA>

XML er relativt fleksibelt bl.a. mht navne på tags og jeg ved der findes mange værktøjer/toolpacks men det er mere med at komme igang.

Så hvis du kan henvise til noget der kan bruges i dette setup er der points at tjene. det må gerne være vha toolboxe osv, bare det virker.

Endeproduktet skal altså være en slags database, strukturen fremgår nogenlunde af det tænkte eksempel.

Avatar billede tdaugaard Nybegynder
05. januar 2001 - 03:07 #1
Dvs. det er tags og deres værdier der skal parses/læses ?
Avatar billede Slettet bruger
05. januar 2001 - 08:15 #2
Jeg ved ikke, hvad forskellen er på VBA og VB.
Men måske kan du bruge artiklen \"Integrating XML with VBA Applications\" fra XML Developer, November 2000?
Du kan finde den på http://www.xmldevelopernewsletter.com/ som
http://www.xmldevelopernewsletter.com/xm/XMMag.nsf/WebIndexOfFreeTips/AAAE3A254B049D2D85256981005E54FC?opendocument
Avatar billede cstern Nybegynder
05. januar 2001 - 09:45 #3
tdaugaard: ja præcis. Jeg kan godt finde ud af at lave en parser selv, men ideen er at benytte de XML rutiner der allerede findes. Du ved, det med at genopfinde den dybe tallerken.

joern_h: VBA er Visual Basic for Applications, dvs det kræver et \"værtsprogram\", som f.eks. MS Word, Excel ell. lign. - Det er afløseren for makrosproget i de ældre versioner af samme værtsprogrammer. Mit program skal være uafhængigt af disse programmer, da det skal kunne køre på en maskine der ikke har dem. Men dermed ikke sagt at der ikke kan være noget jeg kan bruge i artiklen, så jeg kikker lige på det.
Avatar billede jennemaan Nybegynder
05. januar 2001 - 13:32 #4
Check følgende ud:

I ADO 2.5 (Active Data Objects) kan du hente/gemme et recordset som XML.

Check iøvrigt typelibrariet MSXML (Microsoft XML 1.0/2.0). Dette giver dig en hel objektmodel for at arbejde med xml-dokumenter.

Check iøvrigt http://msdn.microsoft.com/xml/default.asp

Her kan du finde det seneste om MS XML 3.0, samt downloade diverse værktøjer (editorer, mv).


/Jennemaan :)
Avatar billede cstern Nybegynder
05. januar 2001 - 14:03 #5
jennemaan - jeg tror det er noget af det rigtige. Jeg skal lige se lidt mere på det.
Flere/andre/mere specifikke forslag eller erfaringer modtages fortsat.
Avatar billede jennemaan Nybegynder
05. januar 2001 - 18:21 #6
Ok, lidt mere specifikt :)

mht. ado.recordset (2.5) kan du bruge det som følger:

\'Læser alle rows i titles og returnerer som en XML-stream
Function RetrieveAllTitlesAsXML() As Variant
Dim stXMLStream As Stream
    Set rsAllTitles = New ADODB.Recordset
    Set stXMLStream = New Stream
    sSQL = \"select * from titles\"
    rsAllTitles.Open sSQL, GetDSN, _
    adOpenForwardOnly, adLockReadOnly, adCmdText
    rsAllTitles.save stXMLStream, adPersistXML
    rsAllTitles.Close
    Set rsAllTitles = Nothing
    Set RetrieveAllTitlesAsXML = stXMLStream
End Function

\'Tager en XML stream og smider tilbage i databasen...
Function PutAllTitlesFromXML(stXMLStream As Stream) as Boolean

    Dim rs as ADODB.Recordset
    Dim Conn as ADODB.Connection

    Conn.Open GetDSN
    rs.Open stXMLStream
    Conn.BeginTrans
    On Error Goto ErrorHandler
    Set rs.ActiveConnection = conn
    rs.UpdateBatch
    Conn.CommitTrans
    PutAllTitlesFromXML=True \'Success
    Exit Function
ErrorHandler:
    Conn.RollbackTrans
    PutAllTitlesFromXML=False \'Failure
End Function       

Din XML-Stream kan du så gemme på HD\'ere som en ascii fil, Sende som parameter til en anden komponent, eller som html-post til en anden webserver.


Prøv evt. at læse et recordset fra en database og gem det som xml. Hiv det ind i notepad (eller din internet explorer som også kan parse xml) og se hvordan det ser ud...

Slutteligt så kig på de værktøjer du kan downloade på msdn. -Der er xml-editorer m.v.


Se mere på http://msdn.microsoft.com/msdnmag/issues/0800/serving/serving0800.asp




/Jennemaan :)
Avatar billede cstern Nybegynder
08. januar 2001 - 14:48 #7
jennemaan: så vidt jeg kan se refererer dine eksempler til MSDN Magazine setup\'et, og der er en del forudsætninger som ikke er nævnt her. Jeg bliver nødt til at lave et setup med mine egne data som udgangspunkt, så det kommer nok til at tage nogen dage, da jeg har andre projekter i gang samtidigt. Så jeg vender tilbage når jeg har fået set nærmere på det, og deler points ud til den tid.
Jeg lader spm være åbent så der er stadig mulighed for supplerende forslag/løsninger.
Avatar billede cstern Nybegynder
24. januar 2001 - 10:11 #8
jennemaan: Kan jeg få dig til at skære det ud i pap?
Jeg har en MSAccess database der hedder \"masterbase.mdb\", tabellen som jeg har XML data til hedder \"sampledata\"
Og filen med data hedder submit.xml

Hvordan bruger jeg dit eks til at hente data fra submit.xml ind og lægge dem ind i sampledata tabellen i masterbase.mdb?

Avatar billede cstern Nybegynder
24. januar 2001 - 14:49 #9
Jeg har oprettet et nyt spm i XML tråden. Der er 400 point udsat. I er velkomne til at svare derovre: http://www.eksperten.dk/spm/45596
Avatar billede cstern Nybegynder
24. januar 2001 - 14:50 #10
Så I får lidt her. der er mere at hente i det andet spm!
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