2011-07-07 32 views
6

Tôi có một XmlDocument và nhận các byte của đối tượng như sau:XMLDocument -> Byte [] ... làm cách nào để quay lại XMLDocument?

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

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

và dữ liệu được lưu trữ trong một cơ sở dữ liệu.

Bây giờ tôi đang đọc dữ liệu byte [] trở lại và muốn quay lại đối tượng XmlDocument. Làm thế nào tôi có thể làm điều này, vì tôi không thể chỉ đơn giản là trường hợp byte [] vào một XmlDocument?

Cảm ơn.

Trả lời

10

Bạn có thể sử dụng LoadXml phương pháp:

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 

UPDATE:

Theo yêu cầu trong phần ý kiến ​​dưới đây là cách để tải các mảng byte thành một 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

Nhanh quá! Cảm ơn bạn! – jkh

+0

Nếu tôi muốn đưa XML này vào một DataTable ... nó không cho phép dataTable.ReadXml (xmlDoc), vì nó đang mong đợi một luồng hoặc tên tệp ... làm thế nào tôi có thể đọc XML này vào một bảng dữ liệu? – jkh

+0

@ John, tôi đã cập nhật câu trả lời của mình để minh họa cho trường hợp này. –

Các vấn đề liên quan