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