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 ???
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