Wie kann ich Kraft XDocument-Ausgabe "UTF-8" in der Erklärung Zeile?
Den folgenden code erzeugt diese Ausgabe:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<customers>
<customer>
<firstName>Jim</firstName>
<lastName>Smith</lastName>
</customer>
</customers>
Wie ich es bekommen kann, zu produzieren encoding="utf-8"
statt encoding="utf-16"
?
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
namespace test_xml2
{
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer> {
new Customer {FirstName="Jim", LastName="Smith", Age=27},
new Customer {FirstName="Hank", LastName="Moore", Age=28},
new Customer {FirstName="Jay", LastName="Smythe", Age=44},
new Customer {FirstName="Angie", LastName="Thompson", Age=25},
new Customer {FirstName="Sarah", LastName="Conners", Age=66}
};
Console.WriteLine(BuildXmlWithLINQ(customers));
Console.ReadLine();
}
private static string BuildXmlWithLINQ(List<Customer> customers)
{
XDocument xdoc =
new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("customers",
new XElement("customer",
new XElement("firstName", "Jim"),
new XElement("lastName", "Smith")
)
)
);
var wr = new StringWriter();
xdoc.Save(wr);
return wr.GetStringBuilder().ToString();
}
}
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Display()
{
return String.Format("{0}, {1} ({2})", LastName, FirstName, Age);
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erlauben Sie mir Antwort auf meine eigene Frage, das scheint zu funktionieren:
XDeclaration
.<?xml version=“1.0”?>
mitXDocument
.Ist dies nicht ein bug in .NET. Dies ist aufgrund Sie mit
StringWriter
als Ziel für Ihre XDocument. Da StringWriter intern verwendet UTF-16, muss das Dokument auch verwenden UTF-16 als encoding. Wenn Sie speichern Sie die XDoc zu einem stream oder einer Datei, wird die UTF-8 verwenden, wie angewiesen.Weitere Informationen finden Sie unter MSDN-Informationen zu
StringWriter.- Encoding
: