Viết khai báo một cách rõ ràng hoặc sử dụng StringWritervà gọi Save():
using System;
using System.IO;
using System.Text;
using System.Xml.Linq;
class Test
{
static void Main()
{
string xml = @"<?xml version='1.0' encoding='utf-8'?>
<Cooperations>
<Cooperation />
</Cooperations>";
XDocument doc = XDocument.Parse(xml);
StringBuilder builder = new StringBuilder();
using (TextWriter writer = new StringWriter(builder))
{
doc.Save(writer);
}
Console.WriteLine(builder);
}
}
Bạn có thể dễ dàng thêm nó làm phương thức mở rộng:
public static string ToStringWithDeclaration(this XDocument doc)
{
if (doc == null)
{
throw new ArgumentNullException("doc");
}
StringBuilder builder = new StringBuilder();
using (TextWriter writer = new StringWriter(builder))
{
doc.Save(writer);
}
return builder.ToString();
}
Điều này có ưu điểm là nó sẽ không đi nổ nếu có không phải là một tuyên bố :)
Sau đó, bạn có thể sử dụng:
string x = doc.ToStringWithDeclaration();
Lưu ý rằng điều đó sẽ sử dụng utf-16 làm mã hóa, vì đó là mã hóa ngầm trong StringWriter. Mặc dù vậy, bạn có thể tác động đến điều đó bằng cách tạo một lớp con StringWriter, ví dụ: luôn sử dụng UTF-8 .