2011-07-07 32 views
6

Bir XmlDocument var ve nesnenin baytlarını aşağıdaki gibi aldım:XMLDocument -> Byte [] ... XMLDocument'e nasıl geri dönülür?

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

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

ve veriler bir veritabanında saklanır.

Şimdi bayt [] verilerini okuyorum ve XmlDocument nesnesine geri dönmek istiyorum. Bunu nasıl yapabilirim, sadece XtDocument'ine bayt [] alamıyorum?

Teşekkürler.

cevap

10

Sen LoadXml yöntemi kullanabilirsiniz:

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 

GÜNCELLEME: yorum bölümünde istediği gibi

burada DataTable içine bayt dizisi yüklemek için:

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

Bu kadar hızlı oldu! Teşekkür ederim! – jkh

+0

Bu XML'i bir DataTable'a almak istiyorsam ... bir stream veya dosya adı beklediği için dataTable.ReadXml (xmlDoc) 'a izin vermez ... Bu XML'i bir veri tablosuna nasıl okuyabilirim? – jkh

+0

@John, Bu senaryoyu açıklamak için cevabımı güncelledim. –

İlgili konular