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