Rozklad xml do skupin   otázka

VB.NET

Mám problém s rozkladem XML-ka. Je to seznam profilů, rozdělený do skupin (Podle tridy a typu) Podařilo se mi to rozdělit do ListBoxů a funguje to tak jak chci. Problém ale je, že když vyberu v poslední úrovni už určitý profil, tak ListBox mi vrátí hodnotu .SelectedIndex a v tom seznamu se mi zavolá profil z celkového pořadí (né ze skupiny typ). Jde to nějak omezit, abych vybíral n-tý prvek řekněme ze skupiny typu HEA? Když kliknu na položku HEA-120, tak mi vrátí IPE-100. Děkuji

<?xml version="1.0" encoding="utf-8"?>
<objekt>
 <profily>
  <trida jmeno="IH">
   <typ jmeno="IPE">
    <profil id="1" jmeno="IPE-80">
     <h>0.08</h>
     <b>0.046</b>
    </profil>

    <profil id="2" jmeno="IPE-100">
     <h>0.1</h>
     <b>0.055</b>
    </profil>
   </typ>

   <typ jmeno="HEA">
    <profil id="4" jmeno="HEA-100">
     <h>0.096</h>
     <b>0.1</b>
    </profil>

    <profil id="5" jmeno="HEA-120">
     <h>0.114</h>
     <b>0.12</b>
    </profil>
   </typ>
  </trida>
 </profily>
</objekt>

________________________________________________________________________________________________

Imports System.Xml

Public Class Form1

    Dim profily As New XmlDocument
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Seznam As New ListViewItem()
        profily.Load("Vstupy\profily.xml")

        LB_Typ.Items.Clear()
        For Each n As Xml.XmlNode In profily.SelectNodes("/objekt/profily/trida")
            LB_Trida.Items.Add(n.Attributes("jmeno").Value)
        Next
    End Sub


    Private Sub LB_Trida_SelectedIndexChanged_1(sender As System.Object, e As System.EventArgs) Handles LB_Trida.SelectedIndexChanged
        If LB_Trida.SelectedIndex = -1 Then Exit Sub
        LB_Typ.Items.Clear()
        With profily.SelectNodes("/objekt/profily/trida")(LB_Trida.SelectedIndex)
            For Each m As Xml.XmlNode In .SelectNodes("typ")
                LB_Typ.Items.Add(m.Attributes("jmeno").Value)
            Next
        End With
    End Sub


    Private Sub LB_Typ_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LB_Typ.SelectedIndexChanged
        If LB_Typ.SelectedIndex = -1 Then Exit Sub
        LB_Profil.Items.Clear()
        With profily.SelectNodes("/objekt/profily/trida/typ")(LB_Typ.SelectedIndex)
            For Each m As Xml.XmlNode In .SelectNodes("profil")
                LB_Profil.Items.Add(m.Attributes("id").Value & "-" & m.Attributes("jmeno").Value)
            Next
        End With
    End Sub


    Private Sub LB_Profil_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LB_Profil.SelectedIndexChanged
        Dim Vystup As String
        Vystup = "Parametry profilu" & chr(13)

        If LB_Profil.SelectedIndex = -1 Then Exit Sub
        With profily.SelectNodes("objekt/profily/trida/typ/profil")(LB_Profil.SelectedIndex)
            Vystup = Vystup & "h=" & .SelectSingleNode("h").InnerText & Chr(13)
            Vystup = Vystup & "b=" & .SelectSingleNode("b").InnerText & Chr(13)
        End With
        L_Vystup.Text = Vystup
    End Sub


End Class

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