2010-03-13 33 views
9

Có thư viện tương đương cho JAXB trong .NET không? Tôi đang cố gắng để chuyển đổi một XML tôi nhận được đến một lớp học NET. Tôi có XSD, nhưng không chắc chắn làm thế nào để chuyển đổi XML nhận được vào một lớp cụ thể? Tôi đã sử dụng các XSD tool để tạo ra một lớp từ lược đồ, nhưng những gì tôi muốn chuyển đổi XML tôi nhận được trên bay đến một đối tượng mà tôi có thể làm việc với trong mã.Tương đương với .NET JAXB?

Tôi đã thấy chủ đề here đề cập đến điều này, nhưng truy vấn của tôi là - Tôi muốn đối tượng được tạo để chứa dữ liệu tôi nhận được trong XML (tức là giá trị trường phải được điền).

Trả lời

0

Đây là một cách tốt hơn và gần gũi hơn với những gì tôi đang tìm kiếm:

static public string serializeObject(ProductPriceLines objecteToSerialize) 
    { 
     System.Xml.Serialization.XmlSerializer mySerializer = new System.Xml.Serialization.XmlSerializer(typeof(ProductPriceLines)); 

     System.IO.MemoryStream t = new System.IO.MemoryStream(); 
     mySerializer.Serialize(t, objecteToSerialize); 


     UTF8Encoding utf = new UTF8Encoding(); 
     string strbytes = utf.GetString(t.ToArray()); 


     return strbytes; 
    } 
+1

Không nói bạn sai , chỉ tò mò tại sao giải pháp này là tốt hơn so với Mike Two. +1 khi bạn trả lời. – JagWire

+1

Câu hỏi của bạn yêu cầu đối tượng XML =>. Câu trả lời của bạn làm theo cách khác xung quanh: object => XML. – ViToni

10

Bạn có thể sử dụng xsd.exe để tạo lớp và sau đó sử dụng XmlSerializer trong mã của bạn để điền vào lớp. Ví dụ, nếu xsd.exe tạo ra một lớp được gọi là Foo bạn có thể viết:

Foo someFoo; 
using (var stream = new FileStream("foo.xml", FileMode.Open)) 
{ 
    var serializer = new XmlSerializer(typeof(Foo)); 
    someFoo = serializer.Deserialize(stream); 
} 
Các vấn đề liên quan