c# - 使用 NULL 节点的 C# XML 反序列化
问题描述
我正在尝试将 XML 反序列化为对象 MyClass。XML 在这里:
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<var1 Type="Numeric">0.91766552047165573</var1>
<var2 Type="Numeric">8</var2>
<var3 Type="Numeric">11</var3>
<var4 Type="Numeric">12</var4>
<var5 Type="Numeric">0</var5>
<var6 Type="Numeric">0.02</var6>
<var7 Type="Financial" Currency="USD">7.0589655420896529</var7>
</MyClass>
以及下面的代码块。
private string SerializeXml(string xml)
{
var _xml = @xml;
var serializer = new XmlSerializer(typeof(MyClass));
using (var reader = new StringReader(xml))
{
MyClass myClass = (MyClass)serializer.Deserialize(reader);
}
return string.Empty;
}
类声明在我尝试反序列化类对象的位置下方
[XmlRoot("MyClass")]
[Serializable]
public class MyClass
{
[System.Xml.Serialization.XmlElement("var1")]
public DataValue var1 { get; set; }
[System.Xml.Serialization.XmlElement("var2")]
public DataValue var2 { get; set; }
[System.Xml.Serialization.XmlElement("var3")]
public DataValue var3 { get; set; }
[System.Xml.Serialization.XmlElement("var4")]
public DataValue var4 { get; set; }
[System.Xml.Serialization.XmlElement("var5")]
public DataValue var5 { get; set; }
[System.Xml.Serialization.XmlElement("var6")]
public DataValue var6 { get; set; }
[System.Xml.Serialization.XmlElement("var7")]
public DataValue var7 { get; set; }
}
解决方案
反序列化无法识别我使用的数据类型,我将类的所有数字成员都转换为 double 并且它正确反序列化
推荐阅读
- elasticsearch - 如何在没有正则表达式的情况下使用脚本字段从日志字段中搜索子字符串
- r - 使用 Ntile 将子集排序为分位数
- ssl - 正确层的正确 SSL 证书
- gradle - 想法不支持 Gradle 5.2 和 4.4.2 错误?
- mysql - 如何计算表中最高订单的数量?
- javascript - 根据窗口大小删除元素
- c - 为什么当返回 char * 时 C 不抛出任何警告?
- javascript - 独立的桌面和移动网站 - 我如何规划后端?
- python - googleapiclient batchGet 序列 Google Analytics Reporting API V4
- ios - 如何在 iOS 上运行 TensorFlow 对象检测