Archief - Vb.net probleem met XML te lezen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SiX

Legacy Member
Jow

Ik wil een xml file lezen van volgende formaat:

Code:
<FileListing Version="1" CID="R5ECEQB3INJRBVTXQYZYO2JOJIRMEQZ62XX6GPA" Base="/" Generator="DC++ 0.770">
<Directory Name="--NieuweGedownload">
	<Directory Name="Misc">
		<Directory Name="Wiley-Photographing.New.York.City.Digital.Field.Guide.2010.RETAiL.EBook-DiGiBook">
			<File Name="di-0810a.zip" Size="5001760" TTH="L4CQO35FG5XOG33PRLE6KPXEH7OTXK6K7RQL5CA"/>
			<File Name="di-0810b.zip" Size="5001760" TTH="KKQTTUWUB2FYTXZNSQJNNBF2227X7KGRA4KXBEI"/>
			<File Name="di-0810c.zip" Size="5001760" TTH="SKF3X5FGMBAIH3XSLA6QLRXPQPV2AEF4SGNCXBY"/>
			<File Name="di-0810d.zip" Size="5001760" TTH="ZS6CKQGDXMN5B7IVBC62BDN35WOKOJVC53JTCYI"/>
			<File Name="di-0810e.zip" Size="5001760" TTH="CWGWJY3ND4KBV6UU3BZ7UYBGOQSO7CXL5TT2JZI"/>
			<File Name="di-0810f.zip" Size="5001760" TTH="TTBAJ4MGJFDWDLJQU2Z7X3YRMT4ZU2MWAI6GAVI"/>
			<File Name="di-0810g.zip" Size="633127" TTH="ORGIJR76KBJJO26AJ3MTJT54PGMESRM4ABQEURI"/>
			<File Name="digibook.nfo" Size="2975" TTH="5EZST3AU767OTBZZKLTBBI7IR4CSQWVSZRGCMXQ"/>
			<File Name="file_id.diz" Size="890" TTH="JXWTL6GVGCZRAGZINUEYVMWWXT4SU5JUNWVHMVI"/>
		</Directory></Directory>
</FileListing>

Met volgende vb.net code:

Code:
Imports System.IO
Imports System.Xml
Public Class frmMain
    Private m_xmld = New XmlDocument()
    Private XMLbron As String = "C:\Temp\SiXsmall.xml"
    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        m_xmld.Load(XMLbron)
        ReadXMLnode("/FileListing")
    End Sub
    Private Sub ReadXMLnode(ByVal nodelist As String)
        Try
            Dim m_nodelist As XmlNodeList
            Dim m_node As XmlNode
            m_nodelist = m_xmld.SelectNodes(nodelist)
            'Loop through the nodes

            For Each m_node In m_nodelist
                If m_node.FirstChild.Name.Equals("Directory") Then
                    ReadXMLnode(nodelist + "/Directory[@Name='" + m_node.FirstChild.Attributes.GetNamedItem("Name").Value + "']")
                End If
                If m_node.FirstChild.Name.Equals("File") Then
                    Dim path As String = nodelist + m_node.FirstChild.Attributes.GetNamedItem("Name").Value
                    path = path.Replace("/FileListing", "")
                    path = path.Replace("/Directory[@Name='", "")
                    path = path.Replace("']", "\")
                    txtMain.Text = txtMain.Text + vbCrLf + path
                End If
            Next
        Catch errorVariable As Exception
            'Error trapping
            Console.Write(errorVariable.ToString())
        End Try
    End Sub
End Class

Het probleem is dat ik maar alleen 1 resultaat terug krijg.

Thx

NeverwinterX

Legacy Member
SelectNodes geeft je alle nodes in het document terug die matchen met de gegeven xpath query. Vervolgens kijk je alleen naar de eerste subnode via FirstChild. Dus ja dan ga je niet alle subnodes krijgen op die manier.

Ik denk dat je eerder moet werken op basis van childNodes om alle subnodes te krijgen en zo recursief te werken of via selectnodes rechtstreeks alle file nodes op te vragen.

Hier meer info: VB6: XML and How To Read It With Visual Basic [a NonHostile article]
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan