所以我有看起来像这样的xml:
<todo-list> <id type="integer">#{id}</id> <name>#{name}</name> <description>#{description}</description> <project-id type="integer">#{project_id}</project-id> <milestone-id type="integer">#{milestone_id}</milestone-id> <position type="integer">#{position}</position> <!-- if user can see private lists --> <private type="boolean">#{private}</private> <!-- if the account supports time tracking --> <tracked type="boolean">#{tracked}</tracked> <!-- if todo-items are included in the response --> <todo-items type="array"> <todo-item> ... </todo-item> <todo-item> ... </todo-item> ... </todo-items> </todo-list>
我将如何使用.NET的序列化库将其反序列化为C#对象?
当前,我正在使用反射,并使用命名约定在xml和对象之间进行映射。
为每个元素创建一个类,每个类具有一个属性,每个子元素具有一个对象列表或对象数组(使用创建的对象)。然后在字符串上调用System.Xml.Serialization.XmlSerializer.Deserialize,并将结果转换为对象。使用System.Xml.Serialization属性进行调整,例如将元素映射到ToDoList类,请使用XmlElement(“ todo-list”)属性。
一个简单的方法是将XML加载到Visual Studio中,单击“推断模式”按钮,然后运行“ xsd.exe / c schema.xsd”以生成类。xsd.exe是在tools文件夹中。然后遍历生成的代码并进行调整,例如在适当的地方将short更改为int。