2010-04-02 30 views
9

Tôi đang tuần tự hóa một đối tượng trong chương trình ASP.net MVC của tôi thành chuỗi xml như thế này;Làm thế nào để thiết lập xmlns khi serializing đối tượng trong C#

StringWriter sw = new StringWriter(); 
XmlSerializer s = new XmlSerializer(typeof(mytype)); 
s.Serialize(sw, myData); 

Bây giờ điều này cho tôi đây là 2 dòng đầu tiên;

<?xml version="1.0" encoding="utf-16"?> 
<GetCustomerName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

câu hỏi của tôi là, Làm cách nào để thay đổi xmlns và loại mã hóa, khi tuần tự hóa?

Cảm ơn

Trả lời

6

gì tôi thấy rằng tác phẩm là để thêm dòng này vào lớp học của tôi,

[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://myurl.com/api/v1.0", IsNullable = true)] 

và thêm video này vào mã của tôi để thêm namespace khi tôi gọi serialize

XmlSerializerNamespaces ns1 = new XmlSerializerNamespaces(); 
    ns1.Add("", "http://myurl.com/api/v1.0"); 
    xs.Serialize(xmlTextWriter, FormData, ns1); 

miễn là cả hai không gian tên phù hợp với nó hoạt động tốt.

6

Loại XmlSerializer có một tham số thứ hai trong constructor của nó là namespace xml mặc định - "xmlns:" namespace:

XmlSerializer s = new XmlSerializer(typeof(mytype), "http://yourdefault.com/"); 

Để thiết lập mã hóa, tôi muốn đề nghị bạn sử dụng một XmlTextWriter thay vì thẳng StringWriter và tạo ra nó một cái gì đó như thế này:

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Encoding = Encoding.UTF8; 

XmlTextWriter xtw = XmlWriter.Create(filename, settings); 

s.Serialize(xtw, myData); 

trong XmlWriterSettings, bạn có thể xác định một loạt các tùy chọn - bao gồm cả mã hóa.

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