Reputation: 1656
I have an XML file that looks like this:
<!DOCTYPE Root [
<!ELEMENT anEntity (#PCDATA)>
<!ELEMENT 500SuchElementsHere (#PCData)>
<!ENTITY file1 SYSTEM "file1.xml">
...
<!ENTITY file25 SYSTEM "file25.xml">
]>
<Root>
&file1;
&file2;
...
&file25;
</Root>
I'm loading the XML file using XmlDocument like this
XmlDocument doc = new XmlDocument();
doc.Load("filePath to the above xml file");
The load throws the exception mentioned in the title. I'm running .NET 4.5, VS 2012 Desktop Express on Windows 7 Ultimate. Any help is appreciated. Thanks
Upvotes: 2
Views: 1900
Reputation: 44941
You need to use an XmlReader with the settings property MaxCharactersFromEntities set to 0 (or a large number that will work for your scenario):
var doc = new XmlDocument();
using (var stream = new MemoryStream(Encoding.Default.GetBytes(xml)))
{
var settings = new XmlReaderSettings();
// The default is 0, but setting it here allows us to document exactly why we are taking this approach.
settings.MaxCharactersFromEntities = 0;
using (var reader = XmlReader.Create(stream, settings))
{
doc.Load(reader);
}
}
Upvotes: 4