[VisualBasic] [.NET] XML Lesen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Knusperkeks, 12. November 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 12. November 2007
    [.NET] XML Lesen

    Meine XML:

    HTML:
    <?xml version="1.0" encoding="utf-16"?>
    <Pfade>
     <Pfad Pfad="C:\Eigene Dateien\Programme\1.exe" />
     <Pfad Pfad="C:\Eigene Dateien\Programme\2.exe" />
     <XML-Pfad XML-Pfad="C:\Eigene Dateien" />
    </Pfade>
    mein vb code um sie zu lesen:

    Code:
     Private Sub XMLReader()
     Dim arrPfade() As String
     Dim i As Long = 0
     Dim XMLReader As Xml.XmlReader = New Xml.XmlTextReader("E:\Eigene Dateien\setting.xml")
     With XMLReader
     Do While .Read
     Select Case .NodeType
     Case Xml.XmlNodeType.Element
     If .AttributeCount > 0 Then
     While .MoveToNextAttribute
     [COLOR="Red"]If .Name = "Pfad" Then
     arrPfade(i) = .Value
     i = i + 1
     End If[/COLOR]
     End While
     End If
     End Select
     Loop
     .Close()
    
     End With
     End Sub
    
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     XMLReader()
     End Sub
    bzw ich will eigentlich nur die ganzen pfade in nem array haben aber es gib beim rot makierten bereich nen fehler:

    Bild=down!


    was mach ich falsch?

    Knusperkeks
     

  2. Anzeige
  3. #2 12. November 2007
    AW: [.NET] XML Lesen

    Hallo Knusperkeks,

    habe Deinen Code jetzt nicht wirklich gelesen, bin müde werd morgen mal reinschauen. Du kannst das XML aber über ein DataSet einlesen.

    Etwa so:
    Code:
    Dim ds as new DataSet
    ds.ReadXml(filename)
    Hoffe das hilft schon mal.

    BG MaxDev
     
  4. #3 13. November 2007
    AW: [.NET] XML Lesen

    wenn du mir noch sagst wie ichd amit an die pfade in nem array komme dann ist das problem erledigt, aber auch nach 15 min googlen finde ich dazu keine lösung!

    Knusperkeks
     
  5. #4 13. November 2007
    AW: [.NET] XML Lesen

    Hallo Knusperkeks,

    ich konnte Deine XML-Struktur so nicht mit der oben genannten Funktion einlesen. Habe Sie etwas abgeändert und den foldgenden Code verwendet.

    XML
    Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <Pfade>
     <Pfad01>C:\Eigene Dateien\Programme\1.exe</Pfad01>
     <Pfad02>C:\Eigene Dateien\Programme\2.exe</Pfad02>
     <XMLPfad>C:\Eigene Dateien"</XMLPfad>
    </Pfade>
    Code
    Code:
     Private Sub Button1_Click( _
     ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim pathes() As String
     pathes = GetPathes()
     End Sub
    
     Private Function GetPathes() As String()
     Dim ds As New DataSet
     Dim pathes As New ArrayList
    
     ds.ReadXml("C:\test1.xml")
    
     For Each dr As DataRow In ds.Tables("Pfade").Rows
     pathes.Add(dr("Pfad01"))
     pathes.Add(dr("Pfad02"))
     pathes.Add(dr("XMLPfad"))
     Next
    
     Return pathes.ToArray(GetType(String))
     End Function
    
    Hoffe das hilft Dir.

    //Edit: Zur Erklärung: Das DataSet gibt dir eine Collection von Tabellen (DataTable) zurück. In Deinem Fall hast Du eine Tabelle (ds.Tables("Pfade")) im XML definiert. Durch die Tabellen kannst Du reihenweise durchgehen (For Each...) und die jeweilige Property (Spalte) der Reihe abfragen (dr("Spaltenname")).

    BG MaxDev
     
  6. #5 13. November 2007
    AW: [.NET] XML Lesen

    Bei mir sagt die IDE:
    "Die arrPfade-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten".
    Array != wie in PHP, oder so. Grenzen müssen explizit deklariert (Dim arrPfade(1)), oder später erweitert (ReDim Preserve arrPfade(2)) werden.

    Dein Code ist - abgesehen von dieser Kleinigkeit mit der Arrayinitialisierung, 1A.

    Alternative: benutze das "List(Of T)"-Object. Damit kannst du eine Klasse erstellen, die eine gemanagde Array eines beliebigen Typs ("T") ist. Sprich: An deiner Stelle würd ich das machen:
    Code:
    ' Suche:
    Dim arrPfade() as String
    ' Ersetze durch:
    Dim Pfade as New List(Of String)
    
    ' Suche:
    arrPfade(i) = .Value
    ' Ersetze durch:
    Pfade.Add(.Value)
    Das List-Object kannst du nun wie ein Array behandeln:
    Code:
    Dim Pfad as String
    For Each Pfad In Pfade
     Console.WriteLine(Pfad)
    Next
    hgzh, Gruß Roogley
     
  7. #6 14. November 2007
    AW: [.NET] XML Lesen

    Jo danke hat geklappt!

    Knusperkeks
     

  8. Videos zum Thema
Die Seite wird geladen...