| |
VB.NET - Ein- und Umsteigertreeview xml lesen mit bestimmten Attribut | | | Autor: theGodfather | Datum: 03.03.19 18:23 |
| Hallo zusammen,
ich habe folgendes Problem.
ich habe ein Treeview und kann dort eine XML-Datei laden. Soweit so gut.
Ich will die Anzeige allerdings so, dass ich das Attribut Nr zb 203 oder 303 davor mit dem Namen Nr. angezeigt bekomme.
Also ein Knotenpunkt der wie folgt aussieht:Nr 203 (statt nur 203)
Irgendwie schaffe ich es nicht. Kann mir einer helfen:
Anbei sowohl der VB-Code den ich soweit fertig habe, bis auf die Anzeige Nr. vor den Werten.
Und die XML-Datei.
Code Part1
Imports System.Xml
Public Class Form1
Dim xmlDok As New XmlDocument
#Region "Laden"
Dim DateiLang As String
Private Sub btnLaden_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnLaden.Click
If dlgXmlÖffnen.ShowDialog = Windows.Forms.DialogResult.OK Then
DateiLang = dlgXmlÖffnen.FileName
Else
Exit Sub
End If
xmlDokLaden()
End Sub
Private Sub Form1_DragEnter(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DragEventArgs) _
Handles MyBase.DragEnter
Dim Dateien() As String = CType(e.Data.GetData(DataFormats.FileDrop), _
String())
If Dateien.GetUpperBound(0) = 0 Then
DateiLang = Dateien(0).ToString
End If
xmlDokLaden()
End Sub
Sub xmlDokLaden()
xmlDok.RemoveAll()
Try
xmlDok.Load(DateiLang)
Catch ausnahmeKeinXml As XmlException
MessageBox.Show("XmlException:" & vbCrLf & vbCrLf & "Keine" & _
"Xml-Daten")
Catch ausnahme As Exception
MessageBox.Show("Anderer Fehler beim Laden von Xml-Dokument:" _
& vbCrLf & vbCrLf & ausnahme.Message)
End Try
Text = "KnotenInfo " & My.Computer.FileSystem.GetName(DateiLang)
tvwFüllen()
tvw.Select()
End Sub
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Me.Load
xmlDok.PreserveWhitespace = True
End Sub
Private Sub chkPreserveWhiteSpace_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles chkPreserveWhiteSpace.Click
tvwAusgewählt = txtSuchen.Text
xmlDok.PreserveWhitespace = chkPreserveWhiteSpace.Checked
xmlDokLaden()
Try
tvw.SelectedNode = tvw.Nodes.Find(tvwAusgewählt, True)(0)
Catch ex As Exception
MessageBox.Show("Tree-Knoten nicht gefunden!")
End Try
tvw.Select()
End Sub
#Region "Darstellung"
Dim tvwAusgewählt As String
Dim tvwSchlüssel As Integer
Sub tvwFüllen()
txtAusgabe.Text = ""
tvw.BeginUpdate()
tvw.Nodes.Clear()
Dim xKnotenListe As XmlNodeList = xmlDok.SelectNodes("*")
Dim tKnoten As TreeNode = tvw.Nodes.Add("")
tvwSchlüssel = 0
tKnoten.Name = tvwSchlüssel.ToString("00")
For Each xn As XmlNode In xKnotenListe
ebeneLesen(xn, tKnoten)
Next
tvw.EndUpdate()
tvw.Select()
End Sub | |
Re: treeview xml lesen mit bestimmten Attribut | | | Autor: theGodfather | Datum: 03.03.19 18:24 |
| Code Part2:
Sub ebeneLesen(ByVal xmlKnoten As XmlNode, ByVal treeKnoten As TreeNode)
tvwSchlüssel += 1
treeKnoten.Text = xmlKnoten.Name
If xmlKnoten.Attributes.Count > 0 AndAlso xmlKnoten.Attributes("Nr") _
IsNot Nothing Then
treeKnoten.Text = xmlKnoten.Attributes("Nr").Value
Else
If xmlKnoten.Name = "Name" Or xmlKnoten.Name = "Punkte" Or
xmlKnoten.Name = "Bezeichnung" Then
treeKnoten.Text = xmlKnoten.InnerText
Else
treeKnoten.Text = xmlKnoten.Name
End If
End If
Dim tn As TreeNode
Dim xn As XmlNode
For Each xn In xmlKnoten.ChildNodes
If xn.HasChildNodes Then
tn = treeKnoten.Nodes.Add(tvwSchlüssel.ToString("00"), xn.Name)
ebeneLesen(xn, tn)
End If
Next
Select Case True
Case rbOuterXml.Checked
treeKnoten.Tag = "OuterXml:" & vbCrLf & xmlKnoten.OuterXml
Case rbInnerXml.Checked
treeKnoten.Tag = "InnerXml: " & vbCrLf & xmlKnoten.InnerXml
Case rbInnerText.Checked
treeKnoten.Tag = "InnerText: " & vbCrLf & xmlKnoten.InnerText
Case rbAttributes.Checked
treeKnoten.Tag = "Attribute: " & vbCrLf
treeKnoten.Tag &= "Name" & vbTab & vbTab & "InnerText" & vbCrLf
For Each xmlAtt As XmlAttribute In xmlKnoten.Attributes
Dim s As String = xmlAtt.Name & vbTab
If s.Length < Strings.Len("Name" & vbTab & vbTab) Then
s &= vbTab
End If
treeKnoten.Tag &= s & xmlAtt.InnerText & vbCrLf
Next
Case rbTreeView.Checked
treeKnoten.Tag = "Name:" & vbTab & vbTab & "Text" & vbCrLf _
& treeKnoten.Name & vbTab & vbTab & _
treeKnoten.Text
Case Else
treeKnoten.Tag = "InnerText: " & vbCrLf & xmlKnoten.InnerText
End Select
End Sub
Private Sub tvw_AfterSelect(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.TreeViewEventArgs) _
Handles tvw.AfterSelect
txtAusgabe.Text = e.Node.Tag
tvwAusgewählt = txtSuchen.Text
txtSuchen.Text = e.Node.Name
txtXmlPfad.Text = Replace(e.Node.FullPath, "\", "/")
End Sub
Private Sub Darstellung(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles rbTreeView.Click, _
rbOuterXml.Click, _
rbInnerXml.Click, _
rbInnerText.Click, _
rbAttributes.Click
txtAusgabe.Clear()
tvwFüllen()
If tvwAusgewählt = "" Then
If txtSuchen.Text <> "" Then
tvwAusgewählt = txtSuchen.Text
Else
tvwAusgewählt = tvw.Nodes(0).Name
End If
End If
Try
tvw.SelectedNode = tvw.Nodes.Find(tvwAusgewählt, True)(0)
Catch ex As Exception
MessageBox.Show("Tree-Knoten nicht gefunden!")
End Try
End Sub
Beitrag wurde zuletzt am 03.03.19 um 18:25:30 editiert. | |
Re: treeview xml lesen mit bestimmten Attribut | | | Autor: theGodfather | Datum: 03.03.19 18:26 |
| Code Part3:
Private Sub btnXPath_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnXPath.Click, _
txtXmlPfad.Validated
Dim xmlPfad As String = txtXmlPfad.Text
Dim sAus As String = ""
If xmlPfad <> "" Then
Try
Dim knoten As XmlNodeList = xmlDok.SelectNodes(xmlPfad)
sAus = "Anzahl knoten: " & knoten.Count & vbCrLf
For Each k As XmlNode In knoten
Dim cUnterknoten As Integer = 0
For i = 0 To k.ChildNodes.Count - 1
Console.WriteLine(i)
Console.WriteLine(k.ChildNodes(i).Name)
If k.ChildNodes(i).Name <> "#whitespace" Then
cUnterknoten += 1
End If
Next i
sAus &= "Name: " & k.Name & " Echte Unterknoten: " _
& cUnterknoten & vbCrLf
For Each uk As XmlNode In k.ChildNodes
If uk.HasChildNodes Then
sAus &= "Name: " & uk.Name & vbTab _
& "InnerText: " & uk.InnerText & vbCrLf
End If
Next
Next
Catch ausnahme As Exception
MessageBox.Show("Fehler beim Einlesen" & vbCrLf & vbCrLf _
& ausnahme.Message)
End Try
End If
txtAusgabe.Text = sAus
End Sub
End Class | |
Re: treeview xml lesen mit bestimmten Attribut | | | Autor: theGodfather | Datum: 03.03.19 18:27 |
| XML-DATEI:
<?xml version="1.0" encoding="utf-8"?>
<Kurse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Kurs Nr="101">
<Bezeichnung>Word Grundlagen</Bezeichnung>
<Teilnehmerliste>
<Teilnehmer Nr="1001">
<Name>Maximilian</Name>
<Punkte>90</Punkte>
</Teilnehmer>
<Teilnehmer Nr="1002">
<Name>Nora</Name>
<Punkte>99</Punkte>
</Teilnehmer>
<Teilnehmer Nr="1003">
<Name>Oskar</Name>
<Punkte>80</Punkte>
</Teilnehmer>
</Teilnehmerliste>
</Kurs>
<Kurs Nr="203">
<Bezeichnung>Excel VBA Programmierung</Bezeichnung>
<Teilnehmerliste>
<Teilnehmer Nr="1001">
<Name>Maximilian</Name>
<Punkte>92</Punkte>
</Teilnehmer>
<Teilnehmer Nr="1005">
<Name>Sarah</Name>
<Punkte>89</Punkte>
</Teilnehmer>
<Teilnehmer Nr="1010">
<Name>Heike</Name>
<Punkte>96</Punkte>
</Teilnehmer>
</Teilnehmerliste>
</Kurs>
<Kurs Nr="303">
<Bezeichnung>Access VBA</Bezeichnung>
<Teilnehmerliste>
<Teilnehmer Nr="1004">
<Name>August</Name>
<Punkte>95</Punkte>
</Teilnehmer>
<Teilnehmer Nr="1006">
<Name>Vicki</Name>
<Punkte>99</Punkte>
</Teilnehmer>
<Teilnehmer Nr="1007">
<Name>Andrea</Name>
<Punkte>98</Punkte>
</Teilnehmer>
</Teilnehmerliste>
</Kurs>
</Kurse> | |
Re: treeview xml lesen mit bestimmten Attribut | | | Autor: HenryV | Datum: 04.03.19 10:32 |
| Beim setzen des treeKnoten.Text den String "Nr. " mitgeben
treeKnoten.Text = "Nr. " & xmlKnoten.Attributes("Nr").Value | |
Re: treeview xml lesen mit bestimmten Attribut | | | Autor: theGodfather | Datum: 04.03.19 17:48 |
| Super HenryV du bist meine Rettung. Danke | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|