Tôi đang cố gắng tạo một đoạn xml. Tôi đã tạo dataclasses với xsd.exe. Lớp gốc là MESSAGE
.XmlTextWriter serialization problem
Vì vậy, sau khi tạo một MESSAGE
và điền tất cả các thuộc tính của nó, tôi serialize nó như thế này:
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
StringWriter sw = new StringWriter();
serializer.Serialize(sw, response);
string xml = sw.ToString();
Cho đến nay mọi việc suôn sẻ, chuỗi xml chứa hợp lệ (UTF-16 mã hóa) xml. Bây giờ tôi muốn tạo xml với mã UTF-8 thay vào đó, vì vậy tôi làm điều đó như thế này:
Sửa: quên bao gồm việc kê khai của con suối
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
using (MemoryStream stream = new MemoryStream())
{
XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(xtw, response);
string xml = Encoding.UTF8.GetString(stream.ToArray());
}
Và ở đây có vấn đề : Sử dụng phương pháp này, chuỗi xml được thêm vào trước với một char không hợp lệ (hình vuông nổi tiếng).
Khi tôi kiểm tra việc char như thế này:
char c = xml[0];
Tôi có thể thấy rằng c có giá trị 65279.
Bất kỳ ai có một đầu mối, nơi này đến từ đâu?
tôi có thể dễ dàng giải quyết điều này bằng cách cắt đứt các char đầu tiên:
xml = xml.SubString(1);
Nhưng tôi thà biết những gì đang diễn ra bên ngoài một cách mù quáng cắt của char đầu tiên.
Mọi người đều có thể làm sáng tỏ điều này? Cảm ơn!
Xem: http://stackoverflow.com/questions/955611/xmlwriter-to-write-to-a -string-instead-of-a-file/955698 # 955698 –