XML SAX解析器,用于使用反射编写脚本

时间:2010-09-15 17:26:36

标签: c# xml sax

我想要使用XML创建一个假设的脚本系统。我们的想法是使用SAX解析器和C#反射。

我找不到允许使用XML文件指定自定义操作的库/框架。这时我使用XML来序列化应用程序类,bug可能很棒,可以指定应用程序使用XML执行哪些操作。

所以,我在考虑:

  • C#的SAX解析器实现?
  • XML脚本约定?

我想要达到的目标是: - 分配类实例属性的可能性 - 调用类实例例程的可能性

假设类实例是隐式的,以下XML脚本对我来说是金色的:

<Script>
    <Property Name='SomeProperty'>
        <Value>
            < ... >
        </Value>
    </Property>
    <RoutineCall>
        <Parameters>
            <Parameter Name='ArgName'>
                < ... >
            </Parameter>
        </Parameters>
    </RoutineCall>
</Script>

有人已经完成了吗?有可能吗?

2 个答案:

答案 0 :(得分:1)

虽然不是SAX解析器,但MSBuildNAnt是基于XML的脚本平台的绝佳示例。两者都支持开发自定义操作,并拥有大量用户,可以随时为您提供帮助。

如果必须从头开始构建,我建议构建实现简单执行接口的可序列化类(例如,Run()方法,已知事件等)。然后,您可以使用.NET XmlSerializer反序列化对象,强制转换为接口,并调用它们的例程。

答案 1 :(得分:1)

Microsoft没有.Net的SAX解析器。但是,它们确实有一个XmlTextReader类,您可以使用它来一次读取xml节点。除了MSBuild之外,似乎Microsoft首先用于WPF和现在用于.Net 4.0 WWF的xaml方言可能类似于您想要编写的脚本。我不确定你对这个项目的要求是什么,如果你真的想全力以赴,你可以使用.Net中的代码生成技术来编译脚本,以获得更好的性能。