XML nejvyšší hodnota id   zodpovězená otázka

VB.NET, XML

Jak programově zjistím poslední id v xml

<otazky>
	<otazka id="1" spravna="1">
		<zadani>Kolik kol má tříkolka?</zadani>
		<odpoved id="1">3 kola</odpoved>
		<odpoved id="2">4 kola</odpoved>
		<odpoved id="3">5 kol</odpoved>
	</otazka>
.....
.....
	<otazka id="29" spravna="3">
		<zadani>Slavné dílo Boženy Němcové se nazývá:</zadani>
		<odpoved id="1">Dědeček</odpoved>
		<odpoved id="2">Bratranec</odpoved>
		<odpoved id="3">Babička</odpoved>
	</otazka>
</otazky>

tady je poslední id např "29", a jak to mám udělat v programu aby věděl kolik tam má otázek

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

Možné to je pomocí system.xml(DOM) nebo system.xml.linq(Linq to XML)

system.xml

Imports System.Xml

Module Module1

    Sub Main()

        Dim xmlDoc As New XmlDocument
        xmlDoc.Load(My.Application.Info.DirectoryPath & "\XmlFile1.xml")

        Dim nl As XmlNodeList = xmlDoc.SelectNodes("/otazky/otazka")

        'Pokud Vás zajímá počet nodů otázka
        Dim pocet As Integer = nl.Count
        Console.WriteLine("Počet otázek = " & pocet.ToString)

        'Pokud Vás zajímá nejvyšší Id otázky
        pocet = 0
        For Each n As XmlNode In nl
            Dim atrId As Integer = Convert.ToInt32(n.Attributes("id").InnerText)
            If atrId > pocet Then pocet = atrId
        Next
        Console.WriteLine("Nejvyšší Id = " & pocet.ToString)

        Console.ReadKey()
    End Sub

End Module

System.xml.linq

Imports System.Xml.Linq

Module Module1

    Sub Main()

        Dim xDoc As XDocument = _
            XDocument.Load(My.Application.Info.DirectoryPath & "\XmlFile1.xml")

        Dim query As IEnumerable(Of XElement) = From o In xDoc.<otazky>.<otazka> _
                                                Order By o.@id Ascending _
                                                Select o
        'Počet otazka v otazky
        Dim pocet As Integer = query.Count
        Console.WriteLine("Počet otázek = " & pocet.ToString)

        pocet = 0
        'Nejvyšší Id
        For Each xe As XElement In query
            Dim atrId As Integer = Convert.ToInt32(xe.@id)
            If atrId > pocet Then pocet = atrId
        Next
        Console.WriteLine("Nejvyšší Id = " & pocet.ToString)

        Console.ReadKey()
    End Sub
End Module

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, moc mi to pomohlo

nahlásit spamnahlásit spam 0 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