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
|