Я пытаюсь загрузить содержимое xml с помощью XmlTextReader, но по какой-то причине XmlTextReader игнорирует флаг DtdProcessing при обработке Xml. Флаг DtdProcessing работает нормально, если вместо этого я использую XmlReader. Проблема с XmlReader заключается в том, что она автоматически нормализует \ r \ n \ to \ n, что я не хочу в своей выходной строке.XmlTextReader игнорирует флаг DtdProcessing
Вот мой фрагмент кода:
XmlDocument xmlDocument = new XmlDocument();
string contents = @"<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>
<!DOCTYPE content [<!ENTITY ouml 'ö'>]>
<content>Test ö Test
Test</content>";
byte[] byteArray = Encoding.UTF8.GetBytes(contents);
MemoryStream stream = new MemoryStream(byteArray);
//XmlReaderSettings settings = new XmlReaderSettings();
//settings.DtdProcessing = DtdProcessing.Parse;
//settings.IgnoreWhitespace = false;
//XmlReader reader = XmlReader.Create(stream, settings);
//xmlDocument.Load(reader);
XmlTextReader reader = new XmlTextReader(stream);
reader.DtdProcessing = DtdProcessing.Parse;
xmlDocument.Load(reader);
Console.WriteLine(xmlDocument.OuterXml);
выхода я получаю от выше обработок:
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?><!DOCTYPE content[<!ENTITY ouml 'ö'>]><content>Test ö Test\r\n\r\n Test</content>"
Вместо этого я хочу вывод строки с DTD переработанным:
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?><!DOCTYPE content[<!ENTITY ouml 'ö'>]><content>Test ö Test\r\n\r\n Test</content>"
Почему вам небезразлично, как выглядит сериализованный XML? Нет никакой разницы между буквальными 'ö' и' ö ', если определен' ouml'. – Tomalak
Спасибо, Томалак. Я хочу, чтобы буквально 'ö' в моем выводе вместо' ö '. Я ценю любой указатель. –
Я понимаю, чего вы хотите. Я спрашивал * почему *, потому что два варианта эквивалентны. – Tomalak