Nacteni Hodnot z XML   zodpovězená otázka

VB.NET, XML, I/O operace

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
    <frq>10</frq>
    <login enabled = true>
        <jmeno>jmeno</jmeno>
        <pass>heslo</pass>
    </login>
</Configuration>

potřeboval bych načíst hodnoty frq, jmeno, heslo a jestli je login enabled.

        Using reader As Xml.XmlReader = Xml.XmlReader.Create("config.xml")
            reader.Read()
            reader.ReadStartElement("Configuration")

            'odezva
            reader.ReadStartElement("frq")
            cas = reader.ReadString 'do promnene
            'reader.ReadEndElement()

            reader.ReadStartElement("login")
            If reader.ReadElementString("enabled") Then
                reader.ReadStartElement("pass") 'heslo
                heslo = reader.ReadString
                reader.ReadEndElement()

                reader.ReadElementString("jmeno")
                jmeno = reader.ReadString
                reader.ReadEndElement()
            Else
                jmeno = "anonym"
                heslo = ""
            End If
                reader.ReadEndElement()

            reader.Close()
        End Using

nevim ale, co dělam špatně..

dik

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Rozhodně dávej pozor na strukturu XML, hodnoty atributů musí být v uvozovkách.

Pokud máš element a chceš přečíst to, co je uvnitř, stačí zavolat ReadElementString, která vnitřní hodnotu vrátí.

Hodnotu atributu získáš zavoláním GetAttribute(atribut), ale pokud před tím zavoláš ReadStartElement, tak kurzor přeskočí až za ty atributy. Musíš tedy zavolat jenom Read, která přeskočí element a skočí na atributy. Po přečtení atributů musíš Read zavolat znovu, aby kurzor skočil za element s atributy.

Správný kód je takhle:

        Using reader As Xml.XmlReader = Xml.XmlReader.Create("config.xml")
            reader.ReadStartElement("Configuration")

            'odezva
            cas = reader.ReadElementString("frq")

            reader.Read()
            If CBool(reader.GetAttribute("enabled")) Then
                reader.Read()
                jmeno = reader.ReadElementString("jmeno")
                heslo = reader.ReadElementString("pass")
            Else
                jmeno = "anonym"
                heslo = ""
            End If
            reader.ReadEndElement()

            reader.Close()
        End Using

nahlásit spamnahlásit spam 5 / 5 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback