子类名称也可以出现在XML输出中吗?



我有以下示例C#代码:

public class child {
    public string mem {get; set;}
}
public class parent {
    public child myChild { get; set;}
    public string parmem {get; set;}
    public parent() {
        parmem = "I AM PARENT" ;
        myChild = new child();
        myChild.mem = "I AM  CHILD";
    }
}
class prog {
     static void Main() {
         parent par = new parent() ;
         TextWriter write = new StreamWriter("MyClass.xml");
         XmlSerializer ser = new XmlSerializer(par.GetType());
         ser.Serialize(write, par);
         write.Close();
    }
}   

现在,我正在尝试通过XMLSerializer序列化类"父"的对象。我的输出看起来像:

<parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <myChild>
        <mem>I AM CHILD</mem>
    </myChild>
    <parmem>I AM PARENT</parmem>
</parent>

我想要的是如下:

<parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    **<child >
        <myChild>
            <mem>I AM CHILD</mem>
        </myChild>
    </child>**
    <parmem>I AM PARENT</parmem>
</parent>

因此,我希望子类的名称也出现在XML输出中。请告诉我是否可以这样做。

如果要在<child>元素内添加<myChild>元素,则在XmlSerialization之后,您需要声明List<child>属性,而不是parent类中的单个child属性。

,例如

public class parent {
    [XmlArray("child")]
    [XmlArrayItem("mychild")]
    public List<child> myChilds { get; set;}
    public string parmem {get; set;}
    public parent() {
        parmem = "I AM PARENT" ;
        myChilds = new List<child>();
        myChilds.Add(new child() {mem  = "I AM  CHILD"} ); 
    }
}

输出

<?xml version="1.0" encoding="utf-8"?>
<parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <child>
    <mychild>
      <mem>I AM  CHILD</mem>
    </mychild>
  </child>
  <parmem>I AM PARENT</parmem>
</parent>

最新更新