Avatar billede noem Nybegynder
24. marts 2006 - 08:37 Der er 2 kommentarer og
1 løsning

Er min XML funktion optimal ?

hej jeg har lavet en funktion til at hente login oplysninger til en SQL database fra en xml fil som ser således ud:

<?xml version="1.0" encoding="utf-8" ?>
<ServerSettings>
  <Server>Kursus1</Server>
  <Database>Changemanegement</database>
  <Table>AUDIT_TRAIL</table>
  <Bruger>sa</Bruger>
  <Password>sa</Password>
</ServerSettings>


til der bruger jeg dette script:



Private Function HentBrugerData() As String
        'Look if File Exist :) if not throw exeption
       
        Dim StrTmpRPath As String = XMLBasePath & XMLConfigFile
        Dim ColXMLData As New Hashtable
        Dim OReader As XmlTextReader = Nothing

        Dim StrLastElement As String = ""

        Try
            OReader = New XmlTextReader(StrTmpRPath)

            While (OReader.Read)
                Select Case OReader.NodeType
                    Case XmlNodeType.Element
                        If OReader.Name <> "ServerSettings" Then
                            ColXMLData.Add(OReader.Name, Nothing)
                            StrLastElement = OReader.Name
                        End If
                    Case XmlNodeType.Text
                        ColXMLData.Item(StrLastElement) = OReader.Value
                    Case Else
                End Select

            End While

        Catch ex As Exception
        Finally
            OReader.Close()

        End Try

        'Se om .XML filen indeholder de fornødne data :
        If ColXMLData.ContainsKey("Password") And ColXMLData.ContainsKey("Bruger") And ColXMLData.ContainsKey("Server") Then
            Dim StrLogin As String = ""

            StrLogin = ColXMLData.Item("Server").ToString() & ","
            StrLogin &= ColXMLData.Item("Bruger").ToString() & ","
            StrLogin &= ColXMLData.Item("Password").ToString() & ","
            'StrLogin &= ColXMLData.Item("Database").ToString() & ","
            'StrLogin &= ColXMLData.Item("Tabel").ToString()

            Return StrLogin
        Else
            MsgBox("Kunne ikke finde login, bruger default")
            Return "localhost, sa, sa" 'Default login
        End If

    End Function





Kan det virkelig passe det skal være så avanceret at hente de oplysninger ???
Avatar billede bernhof Nybegynder
24. marts 2006 - 09:54 #1
Vær opmærksom på, at din XML fil skal være well-formed. XML er case-sensitive, dvs. det er ikke ligegyldigt om du bruger store eller små bogstaver.

Følgende er fx ikke korrekt:

  <Server>navn på server</server>

Hvorimod begge af disse er korrekt, da case er ens i både start- og slut-tag:

  <Server>navn på server</Server>

  <SERVER>navn på server</SERVER>

Læg mærke til S'et i start-tag'et og s'et i slut-tag'et i første eksempel - de er ikke samme case. Dette skal de være, før det egentlig kan kaldes et XML dokument. Så husk at rette det i din egen XML fil. Her er den rettede udgave af din fil:

  <?xml version="1.0" encoding="utf-8" ?>
  <ServerSettings>
    <Server>Kursus1</Server>
    <Database>Changemanegement</Database>
    <Table>AUDIT_TRAIL</Table>
    <Bruger>sa</Bruger>
    <Password>sa</Password>
  </ServerSettings>

Når det er gjort, er XML filen well-formed, og kan herefter benyttes af .NET's parser. Her er et eksempel på, hvordan du kan indlæse fra XML filen på lidt nemmere vis:

  Public Function HentBrugerData() As String
    'Hvis xml-filen ikke findes, kastes en exception.
    Dim doc As New Xml.XmlDocument
    Dim strLogin As String
    Try
      doc.Load("C:\Projekter\Misc\WindowsApplication3\bin\test.xml")
      Try
        strLogin = doc.GetElementsByTagName("Server")(0).InnerText & ","
        strLogin &= doc.GetElementsByTagName("Bruger")(0).InnerText & ","
        strLogin &= doc.GetElementsByTagName("Password")(0).InnerText & ","
        'strLogin &= doc.GetElementsByTagName("Database")(0).InnerText & ","
        'strLogin &= doc.GetElementsByTagName("Table")(0).InnerText
      Catch ex As Exception
        'De nødvendige elementer findes ikke. Returner default login:
        strLogin = "localhost,sa,sa"
      End Try
    Finally
      doc = Nothing
    End Try
    Return strLogin
  End Function
Avatar billede noem Nybegynder
24. marts 2006 - 10:06 #2
cool, noget lign det jeg ledte efter...

kan du lige smide et svar :)
Avatar billede bernhof Nybegynder
24. marts 2006 - 10:07 #3
Svar :)
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