如何使用xml创建c#对象

本文关键字:对象 创建 xml 何使用 | 更新日期: 2023-09-27 18:00:40

我是C#、Silverlight 5和XAML初学者的新手。我正在做一个VS-2012项目,我不必使用任何CycleClip Board Ring来完成这项任务。我的VS项目中有一个XML文件。假设文件如下所示:

FileName is FileXml.xml   
<?xml version="1.0" encoding="utf-8" ?>
   <parameter>
   <name>mounts</name>
    <unit></unit>
      <component>
         <type>List</type>
         <attributes>
            <type>Integer</type>
            <displayed>4</displayed>
            <add_remove>yes</add_remove>
            <item>25</item>
         </attributes>
         <attributes>
            <ccypair>XAUUSD</ccypair>
            <item>100</item>
         </attributes>
      </component >
   </parameter>

我必须解析这个XML文件,并且必须用C#创建对象。这样我就可以使用"bands_amounts"(名称)和通过这些对象访问的所有其他元素。如何使用C#代码做到这一点?

如何使用xml创建c#对象

您将希望使用某种反序列化。下面是我不久前实现的一个例子:

public static class Serialization<T> where T : class   
{    
    public static T DeserializeFromXmlFile(string fileName)
    {
        if (!File.Exists(fileName))
        {
            return null;
        }
        DataContractSerializer deserializer = new DataContractSerializer(typeof(T));
        using (Stream stream = File.OpenRead(fileName))
        {
            return (T)deserializer.ReadObject(stream);
        }
    }
}

然后你可以这样称呼它:

Serialization<YourCustomObject>.DeserializeFromXmlFile(yourFileNameOrPath);

请记住,您必须有一个与要反序列化的XML相对应的类。(又称变成物体)。

你的课看起来像这样:

[Serializable]
class parameter
{
     [Datamember]
     public string name {get; set;}
     [Datamember]
     public string label {get; set;}
     [Datamember]
     public string unit {get; set;}
     [Datamember]
     public component thisComponent {get; set;}
}
[Serializable]
class component
{
    [Datamember]
    public string type {get; set;}
    [Datamember]
    public List<attribute> attributes  {get; set;}
}
[Serializable]
class attribute
{
    [Datamember]
    public string? type {get; set;}
    [Datamember]
    public string? displayed {get; set;}
    [Datamember]
    public string? add_remove {get; set;}
    [Datamember]
    public string? ccypair {get; set;}
    [Datamember]
    public List<int> item { get; set;}
}