2010-07-11 3 views
4

Я новичок в C# и хотел бы попросить какое-то направление для решения следующей проблемы.Использование Dynamic или 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 для создания нового «класса» во время выполнения? Или есть какие-то новые функции, такие как DynamicObject of C# 4.0, которые я могу использовать?

Любой комментарий/образец оценили, спасибо!

ответ

1

Мне кажется, что XDocument удовлетворит ваши потребности. Со всеми операторами LINQ, которые вы можете использовать для запроса и преобразования документа, это должно быть легко и даже приятно.

+0

Спасибо за ваш комментарий. Я попытался LINQ, хотя он работал хорошо, но код будет увеличиваться в одиночку с ростом свойств в шаблоне. Так что я просто задавался вопросом, есть ли какой-то динамичный/надежный способ решить эту проблему, даже если бы я изменил все имена свойств шаблона. thanks – Gnavvy

+0

Мое мышление состояло в том, чтобы использовать первый запрос для данных, чтобы увидеть, что у вас есть, а затем, возможно, создать таблицу поиска имен свойств, которую вы можете использовать для доступа к определенным узлам ... – codekaizen

Смежные вопросы