Unir dos XmlNodeList en uno solo en vb.net

Iniciado por WHK, 12 Enero 2011, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Habrá alguna forma mas efectiva que no sea haciendo un foreach procesando nodo por nodo del objeto XML para unir dos XmlNodeList?

el problema es que tengo un directorio con múltiples bases de datos y el sistema los argará todos y para procesar todo después quiero tener una sola variable y no un array de variables, normalmente podría mantener un array de XmlNodeList pero quiero buscar una alternativa que me permita unirlos talves con alguna función u operador.

Código (vbnet) [Seleccionar]
            Dim DBArch As String, DBs() As String
            DBs = Directory.GetFiles(DBURL, "*.xml", SearchOption.AllDirectories)

            Dim DBXML(DBs.Length) As XmlDocument
            Dim DBNodo(DBs.Length) As XmlNodeList
            Dim Id As Integer = 0
            For Each DBArch In DBs
                DBXML(Id).Load(DBArch)
                DBNodo(Id) = DBXML(Id).SelectNodes("/AutoRemoveXDB/item")
                Id = Id + 1
            Next

            DB = DBNodo ' Acá debería unir el array de DBNodo solamente en DB.

WHK

mejor usaré el array de listado multidimensional para poder manejar el id nombre y descripción de cada base de datos por sepado.

gracias de todas formas.

Código (vbnet) [Seleccionar]
            Dim DBArch As String, DBs() As String
            DBs = Directory.GetFiles(DBURL, "*.xml", SearchOption.AllDirectories)
            Dim DBXML(DBs.Length) As XmlDocument
           ReDim DB(DBs.Length)
           Dim Id As Integer = 0
           Dim NDB As Integer = 0
           For Each DBArch In DBs
               Try
                   DBXML(Id).Load(DBArch)
                   DB(Id) = DBXML(Id).SelectNodes("/AutoRemoveXDB/item")
                   NDB = NDB + DB(Id).Count
                   Id = Id + 1
               Catch ex As Exception
                   ' Next
               End Try
           Next

           If DB.Length > 1 Then
               Estado(DB.Length & " Bases de datos cargadas.")
           Else
               Estado(DB.Length & " Base de datos cargada.")
           End If
           If NDB > 1 Then
               Estado(NDB & " Tareas cargadas.")
           Else
               Estado(NDB & " Tarea cargada.")
           End If

[D4N93R]

Hola,

Si metes el XML dentro de un DataSet puedes utilizar el método Merge :)

Si quieres puedes realizar un benchmark pero yo de todos modos creo que es la forma más óptima. Solo creas dos DataSets, usas el método LoadXml, y luego Merge.

That's all :)