我有以下示例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'的对象。 我的输出看起来像:
<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输出中。 请告诉我是否可以这样做。
答案 0 :(得分:0)
如果您希望在<myChild>
之后<child>
元素中添加XmlSerialization
元素,则需要声明List<child>
属性而不是单个child
属性parent
上课。
e.g。
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>