Tôi đã tìm thấy một cách nhiều thanh lịch hơn để làm điều này: chỉ cần gọi WriteStartDocument(true)
trên XmlWriter
dụ của bạn - mã này serializes data
và kết quả đầu ra XML kết quả ra màn hình.
Thứ nhất, nếu bạn đang sử dụng một StringWriter
bạn cần phải tinh chỉnh nó một chút để buộc UTF-8, nhưng keep this in mind:
Khi serialising một tài liệu XML thành một chuỗi NET, mã hóa phải được đặt thành UTF-16. Các chuỗi được lưu trữ dưới dạng UTF-16 trong nội bộ, vì vậy đây là mã hóa duy nhất có ý nghĩa. Nếu bạn muốn lưu trữ dữ liệu trong một bảng mã khác, thay vào đó bạn sử dụng một mảng byte.
public sealed class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
using (var sw = new Utf8StringWriter())
using (var xw= XmlWriter.Create(sw, new XmlWriterSettings{Indent = true}))
{
xw.WriteStartDocument(true); // that bool parameter is called "standalone"
var namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
var xmlSerializer = new XmlSerializer(typeof(data));
xmlSerializer.Serialize(xw, data);
Console.WriteLine(sw.ToString());
}
WriteStartDocument(true)
thực sự cảm thấy như cách thành ngữ chỉ định standalone=true
. Tiêu đề đầu ra trông giống như sau:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
Nguồn
2015-11-27 19:34:16
Cảm ơn bạn, điều đó vẫn không thanh lịch như tôi mong đợi, nhưng vẫn tốt hơn .Replace (" Xml version =" "1.0" "encoding =" "utf-8" "?>", " xml version =" "1.0" "encoding =" "utf-8" "standalone =" "có" "?>"). lol –
Bạn có thể sử dụng xmlriter.WriteStartDocument (true); –
@HasaniBlackwell ugh, ngay bây giờ tôi nhận thấy rằng nhận xét ....... đó sẽ là câu trả lời tôi đang tìm kiếm! –