Can't set settings in XmlTextReader?

I need to set MaxCharactersFromEntities in XmlTextReader, this is my code:

xmlDocument = new XmlDocument();

xmlTextReader = new XmlTextReader(fileInfo.FullName);
xmlTextReader.Settings = new XmlReaderSettings();
xmlTextReader.Settings.MaxCharactersFromEntities = 0;
var vr = new XmlValidatingReader(xmlTextReader);
vr.ValidationType = ValidationType.None;
vr.EntityHandling = EntityHandling.ExpandEntities;

xmlDocument.Load(vr);

The Settings property is read-only, so it cannot be set and its value is null? How should this work?

+4
source share
2 answers

Instead, create an instance of your reader XmlReader.Create(string, XmlReaderSettings).

In MSDN link:

Starting with the .NET Framework 2.0, we recommend using System.Xml.XmlReader.

The idea is to use the Create (...) factory method of the base class XmlReaderinstead of directly creating the derived class. See the factory method template for more information .

, XmlValidatingReader XmlReader .

, :

xmlDocument = new XmlDocument();

XmlReaderSettings settings = new XmlReaderSettings();
settings.MaxCharactersFromEntities = 0;
XmlReader reader = XmlReader.Create(fileInfo.FullName, settings);

var vr = new XmlValidatingReader(reader);
vr.ValidationType = ValidationType.None;
vr.EntityHandling = EntityHandling.ExpandEntities;

xmlDocument.Load(vr);
+1

XmlReaderSettings XmlReader , reader Settings , , setter-:

var xmlDocument = new XmlDocument();

//create XmlReaderSettings first
var settings = new XmlReaderSettings();
settings.MaxCharactersFromEntities = 80; //0 doesn't make sense here, as it the default value

//create XmlReader later, passing the pre-defined settings
var xmlReader = XmlReader.Create(fileInfo.FullName, settings);

//the rest of the codes remain untouched
var vr = new XmlValidatingReader(xmlReader);
vr.ValidationType = ValidationType.None;
vr.EntityHandling = EntityHandling.ExpandEntities;

xmlDocument.Load(vr);
+2

All Articles