エンティティを展開せずに 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 を作成したりするにはどうすればよいですか?