NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 7 - Čtení XML SAXem ve VB.NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
koncelikj
Člen
Avatar
koncelikj:10.5.2015 21:34

Hmm. A jak zachytit chybu, že soubor neexistuje? Popis na MSDN je na mě moc vědecký.

 
Odpovědět
10.5.2015 21:34
Avatar
Odpovídá na koncelikj
Michal Žůrek - misaz:10.5.2015 21:54

toto se neošetřuje jako chyba ale ošetřuje se to ještě před načítáním souboru podmínkou.

If Not System.IO.File.Exists(cestaKSouboru) Then
    ' soubor neexistuje
End If
 
Odpovědět
10.5.2015 21:54
Avatar
Josef Jeništa:17.3.2017 1:38

Na konci souboru jsme měl posledního člena 2x. Kód jsem trochu upravil. Po přidání uživatele jsem element vymazal (element = "") a teď to chodí, jak má. Omlouvám se, nevím jak se tady upravuje zdroják, aby to nebylo vše na levé straně.

Dim uzivatele As New List(Of Uzivatel)
Dim poc As Integer = 0
Using xr As XmlReader = XmlReader.Cre­ate("soubor.xml")
Dim jmeno As String = ""
Dim vek As Integer = 0
Dim registrovan As DateTime = DateTime.Now
Dim element As String = ""

While xr.Read()
If xr.NodeType = XmlNodeType.Element Then
element = xr.Name
If element = "uzivatel" Then
vek = xr.GetAttribu­te("vek")
ElseIf element = "uzivatele" Then
poc += 1
End If

ElseIf xr.NodeType = XmlNodeType.Text Then
Select Case element
Case "jmeno"
jmeno = xr.Value
Case "registrovan"
registrovan = DateTime.Parse(xr­.Value)
End Select

ElseIf (xr.NodeType = XmlNodeType.En­dElement) And (element = "registrovan") Then
If poc <> 2 Then
uzivatele.Add(New Uzivatel(jmeno, vek, registrovan))
element = ""
End If
End If
End While
End Using

Odpovědět
17.3.2017 1:38
Kolik jazyků umíš, tolikrát jsi programátorem.
Avatar
Josef Jeništa:17.3.2017 1:41

Zapomněl jsem ze zdrojáku vyhodit načítání do poc (poc += 1) a dotaz na poc <> 2. Dal jsem si to tam kvůli ladění.

Odpovědět
17.3.2017 1:41
Kolik jazyků umíš, tolikrát jsi programátorem.
Avatar
Odpovídá na Josef Jeništa
Michal Štěpánek:17.3.2017 7:36

... nevím jak se tady upravuje zdroják, aby to nebylo vše na levé straně.

Zdroják se vkládá za pomoci tagů "code" - je to to druhé tlačítko zleva, hned vedle smajlíka...

Odpovědět
17.3.2017 7:36
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Josef Jeništa:17.3.2017 16:46

Takhle je to definitivně.

Dim uzivatele As New List(Of Uzivatel)
    Dim poc As Integer = 0
    Using xr As XmlReader = XmlReader.Create("soubor.xml")
      Dim jmeno As String = ""
      Dim vek As Integer = 0
      Dim registrovan As DateTime = DateTime.Now
      Dim element As String = ""

      While xr.Read()
        If xr.NodeType.ToString <> "Whitespace" Then
          If xr.NodeType = XmlNodeType.Element Then
            element = xr.Name
            If element = "uzivatel" Then
              vek = xr.GetAttribute("vek")
            End If

          ElseIf xr.NodeType = XmlNodeType.Text Then
            Select Case element
              Case "jmeno"
                jmeno = xr.Value
              Case "registrovan"
                registrovan = DateTime.Parse(xr.Value)
            End Select

          ElseIf (xr.NodeType = XmlNodeType.EndElement) And (element = "registrovan") Then
            uzivatele.Add(New Uzivatel(jmeno, vek, registrovan))
            element = ""
          End If
        End If
      End While
    End Using

    For Each u As Uzivatel In uzivatele
      Console.WriteLine(u)
    Next
    Console.ReadKey()
Odpovědět
17.3.2017 16:46
Kolik jazyků umíš, tolikrát jsi programátorem.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.