Как дать кодировку в виде ISO-8859-1 в XML, созданный с помощью LINQ

Я должен создать XML-файл, который имеет кодировку

<?xml version="1.0" encoding="ISO-8859-1"?>

В настоящее время XML, который я создаю с помощью LINQ, имеет тег как

<?xml version="1.0" encoding="UTF-8"?>

Как я могу сделать это, используя только LINQ.

3 ответа

Решение

Вы должны использовать XDeclaration:

var d = new XDocument(new XDeclaration("1.0", "ISO-8859-1", ""), new XElement("Root",
    new XElement("Child1", "data1"),
    new XElement("Child2", "data2")
 ));

Вы можете сохранить XDocument к StreamWriter имея желаемую кодировку:

var xDocument = new XDocument(new XElement("root"));
var encoding = Encoding.GetEncoding("iso-8859-1");
using (var fileStream = File.Create("... file name ..."))
  using (var streamWriter = new StreamWriter(fileStream, encoding))
    xDocument.Save(streamWriter);

Если вы используете XMLDcoument, вы можете сделать это, как показано ниже:

        XmlDocument doc = new XmlDocument();
        XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
        doc.AppendChild(declaration);
        var node = doc.CreateNode(XmlNodeType.Element, "Root", "");
        doc.AppendChild(node);
        doc.Save("TestDoc.xml");
Другие вопросы по тегам