Запрет XmlTextReader от расширения сущностей

Я пытаюсь прочитать документ XML без расширения сущностей, выполнить некоторые манипуляции с ним и повторно сохранить его с нерасширенными сущностями, какими они были изначально.

При использовании непосредственно XDocument, он не загружается, выдавая исключение, сообщающее, что у него есть нерасширенные сущности:

XDocument doc = XDocument.Load(file);  // <--- Exception
// ... do some manipulation to doc
doc.Save(file2);

Исключение: ссылка на необъявленную сущность 'entityname'.

Затем я попытался передать XmlTextReader в Конструктор XDocument , но свойство EntityHandling не имеет «без раскрытия»:

XmlTextReader xmlReader = new XmlTextReader(file));
xmlReader.EntityHandling = EntityHandling.ExpandCharEntities;
XDocument doc = XDocument.Load(xmlReader);

Также я рассмотрел функцию XmlReader.Create, но MSDN говорит: «средства чтения, созданные методом Create, расширяют все сущности».

Как создать XmlReader, который не раскрывает сущности, или иметь XDocument с не развернутыми сущностями?

8
задан decasteljau 17 August 2010 в 15:38
поделиться