【发布时间】:2017-10-06 00:28:28
【问题描述】:
我正在使用asp.net (C#) 网站,我想Deserialize XML 字符串使用XmlSerializer 类。
我的模型(.cs 文件)
[XmlRoot("MedicalClearanceFormRoot")]
public class MedicalClearanceViewModel
{
[XmlAttribute("PassengerName")]
public string PassengerName { get; set; }
[XmlAttribute("Gender")]
public string Gender { get; set; }
[XmlAttribute("Age")]
public string Age { get; set; }
[XmlAttribute("PhoneNo")]
public string PhoneNo { get; set; }
[XmlAttribute("Email")]
public string Email { get; set; }
[XmlAttribute("BookingRefNo")]
public string BookingRefNo { get; set; }
}
XML 字符串
<MedicalClearanceFormRoot>
<MedicalClearanceForm PassengerName="AAAAAAAAAAAAA" Age="11" PhoneNo="TTTTTTTTTTT" Email="ZZZZZZZZZZZZZZZZZZZ" BookingRefNo="11111111111111111111" />
</MedicalClearanceFormRoot>
将 XML 反序列化为对象的代码
string myXMLStringFromDB = GetXMLStringFromDb(); // this method will return XML from db.
XmlSerializer serializer = new XmlSerializer(typeof(MedicalClearanceViewModel));
using (TextReader reader = new StringReader(myXMLStringFromDB))
{
MedicalClearanceViewModel objModel = (MedicalClearanceViewModel)serializer.Deserialize(reader);
}
但是,问题是当我使用上面的代码将 XML 反序列化为对象时...PassengerName、Age、PhoneNo 等属性在objModel 中仍然是空白的
有人可以帮我在我的班级上设置正确的 XML 表示法吗?有人可以帮我解决这个问题吗?
任何帮助将不胜感激! 谢谢
【问题讨论】:
-
属性为空,因为
<MedicalClearanceFormRoot>没有在 XML 中声明的任何属性。您的层次结构在 XML 和类代码之间是关闭的。 -
MedicalClearanceViewModel 类不应该有 MedicalClearanceForm 属性,MedicalClearanceForm 应该有当前在 MedicalClearanceViewModel 类中声明的所有属性吗?
标签: c# asp.net xml asp.net-mvc xml-deserialization