2009-04-20 68 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如果你想保存它以备将来使用。

至于你对创建程序集的疑虑。定义动态组件&模块并不是什么大不了的事情。这只是几行。