我有以下示例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>