2015-10-29 5 views
2

По причинам совместимости я хочу сгенерировать тот же самый XML, что и другое приложение, с C# XmlWriter.Как написать XML с объектами десятичного типа с XmlWriter

Однако я не могу контролировать, как XML-объекты написаны: XmlWriter использования шестнадцатеричного стиль (& # x20AC), и я хочу десятичный стиль (& # 8364).

Как создать десятичный стиль с помощью XmlWriter?

Пример кода

XmlWriterSettings writerSettings = new XmlWriterSettings 
{ 
    Encoding = Encoding.GetEncoding("iso-8859-1"), 
}; 

using (XmlWriter writer = XmlWriter.Create(stream, writerSettings)) 
{ 
    writer.WriteElementString("test", "€"); 
} 

Выход

<?xml version="1.0" encoding="iso-8859-1"?><test>&#x20AC;</test> 
+0

Что такое кодирование используется для XML пишет другое приложение? –

+0

Кодирование iso-8859-1 – olorin

+0

Но вы говорите, что другое приложение записывает вывод как ''? –

ответ

0

Вы можете попробовать это:

using (XmlWriter writer = XmlWriter.Create(stream, writerSettings)) 
    { 
     string s = AntiXssEncoder.XmlEncode("€"); 
     writer.WriteStartElement("test"); 
     writer.WriteRaw(s); 
     writer.WriteEndElement(); 
    } 

как AntiXssEncoder использует десятичную кодировку. Вам нужно будет сделать это с помощью WriteRaw, потому что XmlEncode уже кодирует все в xml.

Не делать:

 string s = AntiXssEncoder.XmlEncode("€"); 
     writer.WriteElementString("test", s); 

Или ваш выход будет избежать «&» характер &amp;#8364;