2009-04-20 155 views
0

我有一個這樣的xml從Xml創建一個類型

我想解析xml,用spscified屬性構建一個動態類。我發現了一些指針來做system.reflection.emit命名空間,但我做我總是必須創建一個程序集和模塊來定義類型?我可以創建一個類型並定義屬性嗎?

<Root> 
<type> 
<name>mytype</name> 
<properties> 
    <property> 
    <name>property1</name> 
    <value>2</value> 
    <datatype>int</datatype> 
    </property> 
    <property> 
    <name>property3</name> 
    <value>2.5</value> 
    <datatype>double</datatype> 
    </property> 
    <property> 
    <name>property4</name> 
    <value>hello world</value> 
    <datatype>string</datatype> 
    </property> 
</properties> 
</type> 
</Root> 
+0

出於好奇,有沒有一個框架類似於.NET中用於XML綁定(JAXB)的Java架構? – AndreiM 2009-04-20 15:23:52

回答

0

類型必須始終存在於程序集中 - 因此您必須在內存中創建程序集。您可能會發現使用CodeDom模型來定義類型會更容易一些。

+0

謝謝,多數民衆贊成我以爲.. – 2009-04-20 15:21:49

0

This example顯示創建一個AssemblyBuilder,然後創建一個ModuleBuilder然後TypeBuilder。從那裏你必須定義屬性。您必須創建返回&與get和set訪問器匹配的參數的方法。該示例顯示了使用字段進行存儲的標準get/set操作的基本實現。如果你需要更多,那麼你將不得不學習CIL啓動。

當所有完成調用TypeBuilder.CreateType和可能AssemblyBuilder.Save如果你想保存它以備將來使用。

至於你對創建程序集的疑慮。定義動態組件&模塊並不是什麼大不了的事情。這只是幾行。