需要帮助来掌握Commons.Xml.Relaxng中的RelaxngValidatingReader [英] Need help grasping RelaxngValidatingReader in Commons.Xml.Relaxng

查看:75
本文介绍了需要帮助来掌握Commons.Xml.Relaxng中的RelaxngValidatingReader的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

环境:RelaxngValidatingReader .Net 2.0框架

Environment: RelaxngValidatingReader .Net 2.0 Framework

无论我改变多少xml,我似乎都无法使验证器等于false.我在这里想念一些概念吗?

I can't seem to get the validator to equal false, no matter how much I change the xml around. Am I missing some concept here?

资源
https://github.com/mono/mono/tree/master/mcs/class/Commons.Xml.Relaxng

rnc紧凑格式

start = root
root = element root { parent1* & parent2* }
parent1 = element parent1 { element field { attribute usecase_123 {text} } }
parent2 = element parent2 { element field { attribute usecase_AAA {text} } }

xml实例

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <parent1>
    <hello/>
  </parent1>
</root>

主程序

static void Main(string[] args)
{
    RncParser parser = new RncParser(new NameTable());
    TextReader source = new StreamReader("test.rnc");
    RelaxngPattern grammar = parser.Parse(source);

    XmlReader instance = new XmlTextReader("XMLFile1.xml");
    RelaxngValidatingReader reader = new RelaxngValidatingReader(instance, grammar);
    Console.WriteLine("Was the xml valid? {0}", reader.Read());
}

推荐答案

您必须重复Read()直到文件结束:

You have to repeat Read() until End-of-file:

static void Main(string[] args)
{
    RncParser parser = new RncParser(new NameTable());
    TextReader source = new StreamReader("test.rnc");
    RelaxngPattern grammar = parser.Parse(source);

    XmlReader instance = new XmlTextReader("XMLFile1.xml");
    RelaxngValidatingReader reader = new RelaxngValidatingReader(instance, grammar);
    try {
        while (!reader.EOF) {
            reader.Read();
        }
        Console.WriteLine("validation succeeded");
    }
    catch (Exception ex) {
        Console.WriteLine("validation failed with message:");
        Console.WriteLine(ex.Message);
    }
}

这篇关于需要帮助来掌握Commons.Xml.Relaxng中的RelaxngValidatingReader的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆