我尝试验证xml文档中的最大字符:
string xml = "<X><Y><Z></Z><Z></Z><Z></Z></Y></X>";
var settings = new XmlReaderSettings
{
MaxCharactersInDocument = 10
};
try
{
using(var sr = new StringReader(xml))
{
using(var xr = XmlReader.Create(sr))
{
using(var xr2 = XmlReader.Create(xr, settings))
{
while(xr2.Read()){} // MaxCharactersInDocument validation do not work
}
}
}
}
catch (XmlException ex)
{
Console.WriteLine(ex.Message);
}
porpose用于验证外部xml(使用XmlReader接收)以获得最大值。为什么MaxCharactersInDocument验证不适用于在另一个XmlReader上创建的XmlReader?如何以不同方式进行此验证?
此外,方案验证适用于第二个读者,但最大字符验证不适用。
答案 0 :(得分:0)
看一下MSDN's working example for MaxCharactersInDocument,
以下内容也适用于您的输入:
string markup = "<X><Y><Z></Z><Z></Z><Z></Z></Y></X>";
//string markup = "<Root>Content</Root>";
XmlReaderSettings settings = new XmlReaderSettings();
settings.MaxCharactersInDocument = 10;
try
{
XmlReader reader = XmlReader.Create(new StringReader(markup), settings);
while (reader.Read()) { }
}
catch (XmlException ex)
{
Console.WriteLine(ex.Message);
}
似乎StringReader
对象应该在XmlReader.Create
方法中用作输入。
输出: