我需要在MaxCharactersFromEntities上设置XmlTextReader,到目前为止这是我的代码:
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);设置属性是只读的,因此不能设置它的空值?这是怎么回事?
发布于 2015-06-05 07:05:36
您应该使用XmlReader.Create(string, XmlReaderSettings)来创建您的阅读器实例。
来自MSDN引用:
从.NET Framework2.0开始,我们建议您改用System.Xml.XmlReader类。
其想法是使用创建(.)基类XmlReader的工厂方法,而不是直接实例化派生类。还请参阅工厂方法模式以获得更多信息。
代码的其余部分不受影响,因为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);发布于 2015-06-05 07:26:07
首先,您应该在构造XmlReaderSettings实例时传递XmlReader实例,而不是在以后更新读者的Settings属性时,-which是不可能的,因为该属性没有setter-:
var xmlDocument = new XmlDocument();
//create XmlReaderSettings first
var settings = new XmlReaderSettings();
settings.MaxCharactersFromEntities = 80; //0 doesn't make sense here, as it's 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);https://stackoverflow.com/questions/30660229
复制相似问题