2011-07-07 18 views
6

que tienen un XmlDocument y obtener los bytes del objeto de la siguiente manera:XMLDocument -> Byte [] ... ¿cómo volver a XMLDocument?

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("C:\\myxml.xml"); 

byte[] data = Encoding.UTF8.GetBytes(xmlDocument.outerXml); 

y los datos se almacenan en una base de datos.

Ahora estoy leyendo los datos del byte [] y quiero volver al objeto XmlDocument. ¿Cómo puedo hacer esto, ya que no puedo simplemente incluir el byte [] en un XmlDocument?

Gracias.

Respuesta

10

podría utilizar el LoadXml método:

byte[] data = ... fetch from your db 
string xml = Encoding.UTF8.GetString(data); 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(xml); 
// TODO: do something with the resulting XmlDocument 

ACTUALIZACIÓN:

como se solicita en la sección de comentarios aquí está cómo cargar la matriz de bytes en un DataTable:

byte[] data = ... fetch from your db 
DataTable dt = ... fetch from somewhere or instantiate a new; 
using (var stream = new MemoryStream(data)) 
{ 
    dt.ReadXml(stream); 
} 
+0

¡Eso fue rápido! ¡Gracias! – jkh

+0

Si quiero obtener este XML en una DataTable ... no permite dataTable.ReadXml (xmlDoc), ya que está esperando una secuencia o nombre de archivo ... ¿cómo puedo leer este XML en una tabla de datos? – jkh

+0

@John, he actualizado mi respuesta para ilustrar este escenario. –