代码之家  ›  专栏  ›  技术社区  ›  Luca

使用反射编写脚本的xmlsax解析器

  •  4
  • Luca  · 技术社区  · 14 年前

    我想了解一下如何使用XML创建一个假设脚本系统。其思想是使用SAX解析器和C#反射。

    我找不到允许使用XML文件指定自定义操作的库/框架。此时,我使用XML来序列化应用程序类,如果指定应用程序将使用XML执行哪些操作,那么bug可能会非常可怕。

    所以,我在想:

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

    我想实现的是: -分配类实例属性的可能性 -调用类实例例程的可能性

    假设类实例是隐式的,那么下面的XML脚本对我来说是黄金:

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

    已经有人做了?有可能吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   kbrimington    14 年前

    虽然不是SAX解析器, MSBuild NAnt 是基于XML的脚本平台的优秀例子。两者都支持开发自定义操作,并且拥有大量的用户社区,这些用户可以在您进行操作时提供帮助。

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

        2
  •  1
  •   Steve Ellinger    14 年前

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