2010-09-15 50 views
4

我想要創建一個使用XML的假設腳本系統。這個想法是使用SAX解析器和C#反射。用於使用反射腳本的XML SAX分析器

我找不到允許使用XML文件指定自定義操作的庫/框架。此時我將XML用於序列化應用程序類,錯誤可能會很棒,以指定應用程序應使用XML執行哪些操作。

所以,我在想:

爲C#
  • SAX解析器實現?
  • XML腳本約定?

我想達成的目標是: - 可以一個類的實例屬性分配 - 可以調用的類實例例程

假設類實例是隱式的,下面的XML腳本將對我來說是黃金:

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

它已經由某人完成了嗎?可能嗎?

+0

這個想法對我來說似乎很糟糕。 XML通常不適用於腳本編寫,因爲與其他腳本語言相比,代碼會臃腫且難以編寫和讀取。 爲什麼不使用PowerShell?我相信,它提供的功能不會少於您所描述的功能,而且更容易使用。 – VladV 2010-09-15 17:40:27

+0

你能提供一個PowerShell的例子嗎? – Luca 2010-09-15 18:15:16

+0

看到這個帖子例如:http://datatypes.blogspot.com/2008/07/create-assembly-and-import-into.html。顯然,同樣的事情可以在腳本中完成,而不是在交互式shell中完成。 – VladV 2010-09-15 20:29:47

回答

1

雖然不是SAX解析器,但是MSBuildNAnt是基於XML的腳本平臺的絕佳示例。兩者都支持開發自定義操作,並且有大量的用戶可以隨時幫助您。

如果你必須從頭開始構建這個,我建議建立實現一個簡單的執行接口(例如,一個Run()方法,已知事件等)的序列化類。然後,您可以使用.NET XmlSerializer對對象進行反序列化,轉換爲接口並調用它們的例程。

1

Microsoft沒有.Net的SAX解析器。但是,它們有一個XmlTextReader類,您可以一次讀取xml節點。除了MSBuild之外,微軟首先用於WPF,現在在.Net 4.0 WWF中使用的xaml方言可能與您想要做的腳本類似。我不確定你對這個項目有什麼要求,如果你真的想全力以赴,你可以使用.Net中的代碼生成技術來編譯腳本以獲得更好的性能。