Есть ли способ получить кодировку xml в функции toString ()?
Пример:
xml.Save("myfile.xml");
приводит к
<?xml version="1.0" encoding="utf-8"?>
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
Но
tb_output.Text = xml.toString();
приводит к такому выводу
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
...
c#
linq-to-xml
Хенрик П. Хессель
источник
источник
XDocument.Save(TextWriter)
реализации, и она просто игнорирует кодировку объявления, в отличие от реализацийXDocument.Save(String)
илиXDocument.Save(Stream)
. Интересно, почему ...StringWriter
, если вы не используете ту, которая переопределяетEncoding
свойство. У меня есть еще один ответ на этот счет. Я думал, вы говорили, что он полностью отбрасывает "кодировку" ...Свойство Декларации будет содержать объявление XML. Чтобы получить объявление content plus, вы можете сделать следующее:
источник
tb_output.Text = @"<?xml version=""1.0"" encoding=""utf-8"" ?>" + xml;
... = $"{xdoc.Declaration}{Environment.NewLine}{xdoc}";
использовать это:
источник
Мне это понравилось
Пожалуйста, смотрите ниже, что я получаю от DistributorInfo
источник
Подобно другим ответам +1, но немного подробнее об объявлении и немного более точной конкатенации.
<xml />
объявление должно быть на отдельной строке в форматированном XML, поэтому я уверен, что мы добавили новую строку. ПРИМЕЧАНИЕ: при использованииEnvironment.Newline
так будет создана новая строка для конкретной платформыОба результата дают:
источник
Некоторые из этих ответов решают вопрос автора, но кажутся слишком сложными. Вот простой метод расширения, который позволяет избежать необходимости в отдельном писателе, обрабатывает отсутствующее объявление и поддерживает стандартный параметр ToString SaveOptions.
Чтобы использовать расширение, просто замените
xml.ToString()
наxml.ToXmlString()
источник
Вы также можете использовать XmlWriter и вызвать
метод.
источник
источник