Nếu bạn đã cài đặt Kit preview WCF Rest Starter, có một mẹo gọn gàng:
- mở Visual Studio
- chọn nội dung nút XML của bạn (XML tạo nên một trong những nút của bạn) và sao chép nó vào clipboard
- từ "Edit" thực đơn của bạn trong Visual Studio, chọn "Paste XML như loại"
này sẽ dán XML của bạn đó là vào clipboard vào dự án của bạn như là một lớp C# đó là có khả năng deserializing XML chính xác đó. Khá tiện lợi!
Xem các bài đăng trên blog về nó:
Điều đó sẽ giúp bạn tiết kiệm rất nhiều đánh máy và làm cho cuộc sống dễ dàng hơn rất nhiều!
CẬP NHẬT:
OK, bạn đã tạo các lớp học từ XML bạn lấy lại. Bây giờ bạn cần phải chuyển đổi một số XmlNode
thành lớp học của bạn.
Bạn sẽ phải làm một cái gì đó như thế này:
private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();
StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();
stm.Position = 0;
XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);
return result;
}
Bạn cần phải viết các đại diện XML (tài sản .OuterXml
) của XmlNode
đến một dòng (ở đây một MemoryStream
) và sau đó sử dụng XmlSerializer
serialize quay trở lại đối tượng từ luồng đó.
Bạn có thể làm điều đó với phương pháp chung chung và gọi
Customer myCustomer = ConvertNode<Customer>(xmlNode);
hoặc thậm chí bạn có thể biến mã mà vào hoặc là một phương pháp khuyến nông trên lớp XmlNode
vì vậy bạn có thể viết:
Customer myCustomer = xmlNode.ConvertNode<Customer>();
Marc
Nguồn
2009-10-14 07:15:11
Xin chào, tôi đã có các đối tượng từ xsd nên tôi thực sự không thực hiện bước này. Tôi muốn tìm hiểu whats cách tốt nhất để đi từ xmlNodes [] (đối tượng serialized). – 76mel