- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 asp.net (C#) 网站,我想 Deserialize
XML
使用 XmlSerializer
的字符串类(class)。
我的模型(.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
等还是空白
谁能帮我在我的类(class)上设置正确的 XML 符号,谁能帮我解决这个问题。
任何帮助将不胜感激!谢谢
最佳答案
按照 XML 的定义方式,您需要定义两个对象:- 一个用于 MedicalClearanceFormRoot
xml 节点- 一个用于 MedicalClearanceForm
xml 节点
因此,您有两条路线可以选择:添加包装器类或更改您的 xml。
要添加包装器类,您需要有一个类来表示 MedicalClearanceFormRoot
,它具有 MedicalClearanceForm
对象的属性。然后将您的序列化程序类更改为包装类。这是一个例子:
[XmlRoot("MedicalClearanceFormRoot")]
public class Wrapper
{
public MedicalClearanceViewModel MedicalClearanceForm { get; set;}
}
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; }
}
XmlSerializer serializer = new XmlSerializer(typeof(Wrapper));
using (TextReader reader = new StringReader(myXMLStringFromDB))
{
Wrapper objModel = (Wrapper)serializer.Deserialize(reader);
}
选项 2:将您的 XML 更改为如下所示:
<MedicalClearanceFormRoot PassengerName="AAAAAAAAAAAAA" Age="11" PhoneNo="TTTTTTTTTTT" Email="ZZZZZZZZZZZZZZZZZZZ" BookingRefNo="11111111111111111111" >
</MedicalClearanceFormRoot>
关于c# - 将 XML 反序列化为 C# XmlRoot 中的对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840255/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!