Avatar billede curriculum Nybegynder
05. juli 2006 - 14:38 Der er 5 kommentarer og
1 løsning

Inserte data fra xml til database

Jeg har et xml dokument, hvor jeg vil inserte "value" data'erne ind i en ms sql database der bliver identificeret af "name" data.

Nedenfor er mit xml dokument
  <?xml version="1.0" encoding="iso-8859-1" ?>
- <DKMaster>
  <Provider>DMI</Provider>
- <AnalysisTime>
  <year>2006</year>
  <month>07</month>
  <day>05</day>
  <hour>11</hour>
  <minute>15</minute>
  <time>UTC</time>
  </AnalysisTime>
- <parameter>
  <name>Winddirection</name>
  <unit />
  <value>140</value>
  </parameter>
- <parameter>
  <name>WindSpeed</name>
  <unit>knob</unit>
  <value>9</value>
  </parameter>
- <parameter>
  <name>WindMaximum</name>
  <unit>knob</unit>
  <value>12</value>
  </parameter>
- <parameter>
  <name>WindMinimum</name>
  <unit>knob</unit>
  <value>6</value>
  </parameter>
- <parameter>
  <name>Temperature</name>
  <unit>Celcius</unit>
  <value>13.6</value>
  </parameter>
- <parameter>
  <name>Dewpoint</name>
  <unit>Celcius</unit>
  <value>13.6</value>
  </parameter>
- <parameter>
  <name>QNH</name>
  <unit>HPa</unit>
  <value>1012.3</value>
  </parameter>
  </DKMaster>

Jeg har disse tilsvarende kolonner i databasen (sTime, sDirection, sKnots, sTemp, sDew, sQNH).
Avatar billede snepnet Nybegynder
05. juli 2006 - 14:40 #1
Du kan loade det ind i et dataset, og opdatere basen med det... Det er nok det nemmeste.
Mvh
Avatar billede curriculum Nybegynder
05. juli 2006 - 15:13 #2
Jeg kan godt finde ud af læse xml filen ind i et dataset, men har problemer med at sætte "value" til hvert af "name", så jeg indsætte data'erne i db.
Avatar billede snepnet Nybegynder
05. juli 2006 - 15:23 #3
Du kan lave tablemappings på din adapter til den slags.
someAdapter.TableMappings.Add("","").ColumnMappings.
Mvh
Avatar billede curriculum Nybegynder
05. juli 2006 - 16:09 #4
Jeg fandt en anden løsning inden jeg kom til ColumnMappings. Fik lavet en function som returnerer en arraylist.

Dim ds As New DataSet
ds.ReadXml(xmlPath)
Dim values As ArrayList = GetDatasetValues(ds)

Public Function GetDatasetValues(ByVal ds As DataSet) As ArrayList
        Dim values As New ArrayList
        Dim rowName As String

        For Each table As DataTable In ds.Tables
            If table.TableName.ToLower = "analysistime" Then
                Dim sTimeHH, sTimeMM As String

                For Each row As DataRow In table.Rows
                    sTimeHH = row("hour")
                    sTimeMM = row("minute")
                Next

                values.Add(sTimeHH.ToString & ":" & sTimeMM.ToString)
            End If


            If table.TableName.ToLower = "parameter" Then
                For Each row As DataRow In table.Rows
                    rowName = row("name")

                    Select Case rowName.ToLower
                        Case "winddirection" : values.Add(row("value"))
                        Case "windspeed" : values.Add(row("value"))
                        Case "temperature" : values.Add(row("value"))
                        Case "dewpoint" : values.Add(row("value"))
                        Case "qnh" : values.Add(row("value"))
                    End Select
                Next
            End If
        Next

        Return values
End Function
Avatar billede curriculum Nybegynder
05. juli 2006 - 17:51 #5
mit fungerer :)
Avatar billede snepnet Nybegynder
06. juli 2006 - 10:22 #6
:o)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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