2010-07-11 69 views
4

我是C#的新手,想问一些解决以下问题的方向。使用动态或Reflection.emit

我有一个xml文件用作模板(事先不知道它的内容)。像这样:

<Object> 
    <Property name="ID"> 
    <Value weight="40">10000</Value> 
    <Value weight="60">20000</Value> 
    </Property> 
    <Property name="Name"> 
    <Value weight="">foo</Value> 
    <Value weight="">bar</Value> 
    </Property> 
    <Property name="Department"> 
    <SubProperty name="Department_ID"> 
     <Value weight="20">D01</Value> 
     <Value weight="80">D02</Value> 
    </SubProperty> 
    <SubProperty name="Location"> 
     <Value weight="30">F01</Value> 
     <Value weight="70">F02</Value> 
    </SubProperty> 
    </Property> 
</Object> 

我想读它,做一些洗牌,并导出到一个新的XML文件。比方说,根据它们的权重(百分比)随机获取每个属性的值,以创建混合属性对象的新列表,然后将其序列化为新的xml文件。

这是使用Reflection.Emit在运行时创建一个新的“类”吗?或者是否有任何新功能,例如我可以使用的C#4.0的DynamicObject?

任何意见/样本表示赞赏,谢谢!

回答

1

在我看来,XDocument会很好地满足您的需求。使用所有可用于查询和转换文档的LINQ操作符,它应该很容易,甚至是令人愉快的。

+0

感谢您的评论。 我曾尝试使用LINQ,虽然它运行良好,但代码将随着模板中属性的增长而单独增加。 所以我只是想知道是否有一些动态/强大的方法来解决这个问题,即使我改变了模板的全部属性名称。 谢谢 – Gnavvy 2010-07-11 13:11:28

+0

我的想法是对数据使用查询优先的方法来查看你有什么,然后可能建立一个属性名称查找表,你可以用它来访问特定的节点... – codekaizen 2010-07-11 16:59:05

相关问题