MaxCharactersInDocument验证不起作用

时间:2016-05-30 09:23:44

标签: c# validation xmlreader

我尝试验证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?如何以不同方式进行此验证?

此外,方案验证适用于第二个读者,但最大字符验证不适用。

1 个答案:

答案 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方法中用作输入。

输出:

enter image description here