xKnown he "descubierto" algunas cosas, primero modifique tu modificacion (valga la redundancia) del siguiente modo:
Código:
Public Function StrXml2Table(ByVal StrXML As String) As DataTable
Dim ms As MemoryStream
Dim sw As StreamWriter
Dim kk() As Byte 'Añadido
Try
Dim ds As New DataSet
ms = New MemoryStream(StrXML.Length)
sw = New StreamWriter(ms)
sw.Write(StrXML)
kk = ms.GetBuffer 'Añadido
ds.ReadXml(ms) 'Aqui pongo un punto de ruptura
ms.Close()
Return ds.Tables(0)
Catch ex As Exception
Throw New Exception("Error en StrXml2Table: " & ex.ToString)
Finally
If Not sw Is Nothing Then
sw.Close()
End If
If Not ms Is Nothing Then
ms.Close()
End If
End Try
End Function
Lo que hize es poner un punto de ruptura en
ds.ReadXml(ms) e hize una inspeccion rapida de la variable
kk y todos los bytes de la matriz estan a 0; y creo que es por eso que me da el error de que falta el elemento raiz.
El contenido,por si sirve de algo, del parametro strXML es:
Código:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ROOT>
<MAESMONBAK_record _ID = "0000" DENOM = "COTO" PROVIN = "21" ESPEC = "041" GRUPOB = "26" DEPART = "CT" DELEG = "08" COMARCA = "01" CLIENTE = "0099" CENTRONEG = "10" GRUPACT = "30" ACTIVIDAD = "170">
<DPROVIN_MV DPROVIN = "HUELMA"/>
<DGRUPOB_MV DGRUPOB = "ANTER"/>
</MAESMONBAK_record>
</ROOT>
Un saludo y gracias.