【发布时间】:2017-08-27 12:30:33
【问题描述】:
我有以下字符串,代表一个 xml 层次结构:
"<cookie page=\"1\">
<pz_requestid last=\"{987A23F4-8582-E711-8114-005056B74623}\" first=\"{9F2E4A8C-EB7D-E711-8116-005056B71CCD}\" />
</cookie>";
我需要将它反序列化为一个类。
我的问题是子元素可以有不同的名称。例如,在上面的示例中,它的名称是“pz_requestid”,但也可以是其他名称,例如“pz_accountid”。我不知道如何以能够正确反序列化的方式构建类层次结构。
目前,我创建了以下类,仅当元素名称为 pz_requestid 时才有效:
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class cookie
{
public entityidfieldid pz_requestid { get; set; }
[System.Xml.Serialization.XmlAttributeAttribute()]
public int page { get; set; }
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class entityidfieldid
{
[System.Xml.Serialization.XmlAttributeAttribute()]
public string last {get; set;}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string first { get; set; }
}
以下反序列化代码有效:
string inputString = "<cookie page=\"1\"><pz_requestid last=\"{987A23F4-8582-E711-8114-005056B74623}\" first=\"{9F2E4A8C-EB7D-E711-8116-005056B71CCD}\" /></cookie>";
XmlSerializer serializer = new XmlSerializer(typeof(cookie));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
cookie mycookie = (cookie)serializer.Deserialize(memStream);
我需要改变什么才能得到我需要的东西?
【问题讨论】:
标签: c# xml serialization