xml格式Contract
string data =
"<Contract xmlns=\"http://tianka.com\">
<Title>合同版权</Title><Copyrights> //一个合同里面有多个版权实体
<Copyright ><WorksName>青色平原</WorksName></Copyright>
<Copyright ><WorksName>西游记</WorksName></Copyright>
</Copyrights></Contract>";下面是DataContract契约类//合同类
[DataContract(Namespace = "http://tianka.com")]
public class Contract
{
[DataMember]
public int Title{ get;set;} private List<Copyright> m_copyrights = new List<Copyright>();
[DataMember]
public List<Copyright> Copyrights
{
get
{
return this.m_copyrights;
}
set
{
this.m_copyrights = value;
}
}
}//版权类
[DataContract]
public class Copyright
{
[DataMember]
public string WorksName { get; set; } }问题: //反序列化为对象
byte[] bytes = UnicodeEncoding.UTF8.GetBytes(data);
DataContractSerializer xml = new DataContractSerializer(typeof(Contract));
MemoryStream ms = new MemoryStream(bytes);
Contract c = (Contract)xml.ReadObject(ms); 序列化完之后c.Copyrights总是为null.请高手解答。
string data =
"<Contract xmlns=\"http://tianka.com\">
<Title>合同版权</Title><Copyrights> //一个合同里面有多个版权实体
<Copyright ><WorksName>青色平原</WorksName></Copyright>
<Copyright ><WorksName>西游记</WorksName></Copyright>
</Copyrights></Contract>";下面是DataContract契约类//合同类
[DataContract(Namespace = "http://tianka.com")]
public class Contract
{
[DataMember]
public int Title{ get;set;} private List<Copyright> m_copyrights = new List<Copyright>();
[DataMember]
public List<Copyright> Copyrights
{
get
{
return this.m_copyrights;
}
set
{
this.m_copyrights = value;
}
}
}//版权类
[DataContract]
public class Copyright
{
[DataMember]
public string WorksName { get; set; } }问题: //反序列化为对象
byte[] bytes = UnicodeEncoding.UTF8.GetBytes(data);
DataContractSerializer xml = new DataContractSerializer(typeof(Contract));
MemoryStream ms = new MemoryStream(bytes);
Contract c = (Contract)xml.ReadObject(ms); 序列化完之后c.Copyrights总是为null.请高手解答。
<Copyright ><WorksName>青色平原</WorksName></Copyright>
<Copyright ><WorksName>西游记</WorksName></Copyright>
</Copyrights>这个和List<Copyright>不匹配的
static void Main(string[] args) {
//var c = new Contract {
// Title = "合同版权",
// Copyrights = new List<Copyright> {
// new Copyright{WorksName="worksname1"},
// new Copyright{WorksName="worksname2"},
// new Copyright{WorksName="worksname3"}
// }
//}; //using (MemoryStream ms = new MemoryStream()) {
// var xs = new XmlSerializer(typeof(Contract));
// xs.Serialize(ms, c);
// Console.WriteLine(Encoding.UTF8.GetString(ms.GetBuffer()));
//} string data = "<Contract><Title>合同版权</Title><Copyrights><Copyright ><WorksName>青色平原</WorksName></Copyright><Copyright><WorksName>西游记</WorksName></Copyright></Copyrights></Contract>";
var xs = new XmlSerializer(typeof(Contract));
var c = xs.Deserialize(new StringReader(data)) as Contract;
Console.WriteLine(c.Copyrights.Count);
foreach(var each in c.Copyrights){
Console.WriteLine(each.WorksName);
} Console.WriteLine("press any key to exit.");
Console.ReadLine();
}
}[DataContract]
public class Contract {
[DataMember]
public string Title { get; set; } private List<Copyright> m_copyrights = new List<Copyright>();
[DataMember]
public List<Copyright> Copyrights {
get { return this.m_copyrights; }
set { this.m_copyrights = value; }
}
}//版权类
[DataContract]
public class Copyright {
[DataMember]
public string WorksName { get; set; }}这样是OK的,数量2,能输出WorksName内容
[DataMember(Order=1)]
public List<Copyright> Copyrights2. 指定名字:
[DataContract(Namespace = "http://tianka.com", Name = "Copyright")]
public class Copyright
<Contract xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tianka.com"><Copyrights xmlns:d2p1="http://schemas.datacontract.org/2004/07/WcfService1"><d2p1:Copyright><d2p1:WorksName>三重门</d2p1:WorksName></d2p1:Copyright></Copyrights><TranType>1</TranType></Contract>
怎么会有 d2p1这样的东东,怎么能去掉呢。