Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di bubu80
    Registrato dal
    Aug 2002
    Messaggi
    99

    [VB.NET] Lettura file XML e popolazione Classi

    Ciao a tutti,

    si lo so, il titolo fa pena ma non sapevo sinceramente cosa scrivere .

    prova a spiegare cosa mi turba

    praticamente ho un file XML che potrebbe essere composto in questo modo:

    codice:
    <root>
         
         <XUno>  
             <Uno nome="pippo" tipo="uomo" />
             <Uno nome="pluto" tipo="uomo"  />
             <Uno nome="panzone" tipo="uomo"  />
         </XUno>
    
          <XDue>
             <Due  nome ="pino" altezza="ciccio"  larghezza="ooo" tipo="Boh" />
             <Due  nome ="pino" altezza="ciccio"  larghezza="ooo" tipo="Boh" />
          </XDue>
       
    </root>
    dato questo file XML vorrei creare per ogni nodo "XUno/XDue" una lista contente
    gli oggetti Uno o Due dove gli attributi sono le proprietà degli oggetti Uno/Due.


    questa è una bozza di come sto pensando di gestirlo questo file XML

    codice:
    ' Classe base che rappresenta i Nodi collection
    Public MustInherit Class myNodeCollection
        Inherits CollectionBase
    
        Protected _XmlDoc As Xml.XmlDocument
        Protected _XPath As String
    
        Public Sub New()
            _XmlDoc = New Xml.XmlDocument
            SetXPath()
        End Sub
        Public Overridable Function Add(ByVal pMyNode As myNode)
            Me.InnerList.Add(pMyNode )
        End Function
    
        Public Function Load(ByVal XmlPath As String)
            _XmlDoc.Load(XmlPath )
            If _XmlDoc.HasChildNodes Then
                Me.InnerList.Clear()
                SetCollectionObject(_XmlDoc.SelectNodes(Me._XPath))
            End If
        End Function
    
        Public MustOverride Function GetXMLString() As String
        Protected MustOverride Sub SetCollectionObject(ByVal pNodeList As Xml.XmlNodeList)
        Protected MustOverride Sub SetXPath()
    
    End Class
    
    ' Classe base che rappresenta i Nodi singoli
    Public MustInherit Class myNode
        Public Nome As String
    End Class
    
    '------------------------------------------------------
    ' Implementazione Nodo collection XUno
    '------------------------------------------------------
    Public Class XUno
        Inherits myNodeCollection
    
        'restituisce la lista dei nodi Uno
        Public Overrides Function GetXMLString() As String
            Dim elem As Xml.XmlElement
            Dim att As Xml.XmlAttribute
            Dim root As Xml.XmlElement
    
            _XmlDoc.RemoveAll()
    
            root = _XmlDoc.CreateElement("root")
    
            For Each _uno As Uno In InnerList
    
                elem = _XmlDoc.CreateElement("Uno")
    
                att = _XmlDoc.CreateAttribute("nome")
                att.Value = _uno.Nome
                elem.Attributes.Append(att)
    
    
                att = _XmlDoc.CreateAttribute("Tipo")
                att.Value = _uno.Tipo
                elem.Attributes.Append(att)
    
                root.AppendChild(elem)
    
            Next
    
            _XmlDoc.AppendChild(root)
    
            Return root.InnerXml
        End Function
    
        ' Imposta XPath di ricerca
        Protected Overrides Sub SetXPath()
            _XPath = "/root/XUno/*"
        End Sub
    
        ' Popola la collezione XUno
        Protected Overrides Sub SetCollectionObject(ByVal pNodeList As System.Xml.XmlNodeList)
            Dim ut As Uno
    
            For Each nd As Xml.XmlNode In pNodeList
    
                ut = New Uno
                ut.Name = nd.Attributes("Nome").Value
                ut.Description = nd.Attributes("Tipo").Value
                Me.InnerList.Add(ut)
    
            Next
    
        End Sub
    
    End Class
    
    ' Classe Uno
    Public Class Uno
        Inherits myNode
        public Tipo as string
     End Class

    secondo voi va bene o mi sto facendo un mucchio di seghe mentali.

    si accettano consigli e insulti

    Ciao
    Non si finisce mai di imparare...

  2. #2
    Utente di HTML.it L'avatar di bubu80
    Registrato dal
    Aug 2002
    Messaggi
    99
    up opinioni?
    Non si finisce mai di imparare...

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Ciò che non mi è chiaro (ma ho letto in fretta) è se tu hai una struttura di dati "fissa" oppure se le proprietà degli oggetti che devi creare devono mutare in base alla struttura del file XML.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di bubu80
    Registrato dal
    Aug 2002
    Messaggi
    99
    ciao alka

    allora la struttura dati è fissa... gli unici dati che possono variare sono gli elementi all'interno di XUno o XDue...


    ciao
    Non si finisce mai di imparare...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.