【问题标题】:XML SAX parser for scripting using reflection用于使用反射编写脚本的 XML SAX 解析器
【发布时间】:2010-09-24 09:17:37
【问题描述】:

我想就使用 XML 创建一个假设的脚本系统提出意见。这个想法是使用 SAX 解析器和 C# 反射。

我找不到允许使用 XML 文件指定自定义操作的库/框架。目前我使用 XML 序列化应用程序类,错误可能会非常棒地指定应用程序应使用 XML 执行哪些操作。

所以,我在想:

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

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

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

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

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

【问题讨论】:

  • 这个想法对我来说似乎很糟糕。 XML 通常不适合编写脚本,因为与其他脚本语言相比,代码会变得臃肿且难以编写和阅读。为什么不只使用 PowerShell?我相信,它提供的功能不亚于您所描述的,而且绝对更易于使用。
  • 您能提供一个 PowerShell 示例吗?
  • 查看此帖子,例如:datatypes.blogspot.com/2008/07/…。显然,同样可以在脚本中完成,而不是在交互式 shell 中。

标签: c# xml sax


【解决方案1】:

尽管不是 SAX 解析器,MSBuildNAnt 是基于 XML 的脚本平台的优秀示例。两者都支持开发自定义操作,并拥有庞大的用户社区,他们可能会在您的工作中提供帮助。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 2011-04-30
      • 2011-08-27
      • 2011-06-17
      • 2013-09-27
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      相关资源
      最近更新 更多