Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
653 views
Welcome To Ask or Share your Answers For Others

1 Answer

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);
            }
        }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...