反序列化 XML 文档
本文关键字:文档 XML 反序列化 | 更新日期: 2023-09-27 18:30:34
我正在尝试将xml文档反序列化为C#类。
<?xml version="1.0" encoding="utf-8"?>
<Exclusionpolicys>
<Exclusionpolicy>
<ValuationRoutes>
<ValuationRoute>value1</ValuationRoute>
<ValuationRoute>Value2</ValuationRoute>
</ValuationRoutes>
<ExcludeHives>
<ExcludeHive name="samplename1"/>
<ExcludeHive name="samplename2"/>
<ExcludeHive name="samplename3"/>
<ExcludeHive name="samplename4"/>
</ExcludeHives>
</Exclusionpolicy>
<Exclusionpolicy>
<ValuationRoutes>
<ValuationRoute>Value3</ValuationRoute>
</ValuationRoutes>
<ExcludeHives>
<ExcludeHive name="samplename5"/>
</ExcludeHives>
</Exclusionpolicy>
</Exclusionpolicys>
这是我创建的类。
[XmlRootAttribute("Exclusionpolicys")]
public class ExclusionPolicys
{
[XmlElement("ExcludeHive ")]
public ExcludedPolicyHives[] ExcludedHives { get; set; }
[XmlElement("ValuationRoute")]
public ExcludedPolicyValuationRoute[] ValuationRoutes { get; set; }
}
public class ExcludedPolicyHives : IExcludedHives
{
public List<string> Hives { get; set; }
}
public class ExcludedPolicyValuationRoute
{
public List<string> ValuationRoutes { get; set; }
}
当我反序列化它时...它不会抛出任何错误,但给我一个 ExclusionPolicys 的对象,两个属性的值均为空值。
任何人都可以帮助确定我的类定义有什么问题。
我想将其反序列化为键值对列表/数组或类似内容。
提前谢谢。
感谢您的帮助。工作副本在这里...
[XmlRoot("Exclusionpolicys")]
public class ExclusionPolicys
{
[XmlElement("Exclusionpolicy")]
public List<Exclusionpolicy> Exclusionpolicy { get; set; }
}
public class Exclusionpolicy
{
[XmlElement("ValuationRoutes")]
public List<ExcludedPolicyValuationRoutes> ValuationRoutes { get; set; }
[XmlElement("ExcludeHives")]
public List<ExcludedHiveses> ExcludedHives { get; set; }
}
[XmlRoot("ExcludeHives")]
public class ExcludedHiveses
{
[XmlElement(ElementName = "ExcludeHive")]
public List<string> Hives { get; set; }
}
public class ExcludedPolicyValuationRoutes
{
[XmlElement("ValuationRoute")]
public List<string> ValuationRoute { get; set; }
}
将类库更改为以下代码,因为 XML 反序列化必须与 XML 一致,即:类库必须直接反映 XML 代码。
[XmlRoot("Exclusionpolicys")]
public class ExclusionPolicys
{
[XmlElement("Exclusionpolicy")]
public List<Exclusionpolicy> Exclusionpolicy;
}
public class Exclusionpolicy
{
[XmlElement("ValuationRoutes")]
public List<ExcludedPolicyValuationRoutes> ValuationRoutes { get; set; }
[XmlElement("ExcludeHives")]
public List<ExcludedPolicyHives> ExcludedHives { get; set; }
}
public class ExcludedPolicyHives
{
[XmlElement("ExcludeHive")]
public List<ExcludedPolicyHive> ExcludedPolicyHive;
}
public class ExcludedPolicyValuationRoutes
{
[XmlElement("ValuationRoute")]
public List<ValuationRoute> ValuationRoute { get; set; }
}
public class ExcludedPolicyHives
{
public string Hives { get; set; }
}
public class ExcludedPolicyValuationRoute
{
public string ValuationRoutes { get; set; }
}
Visual Studio 2012中内置了一个转换工具 - 我不知道它与其他VS的外观如何。
- 使用 .Net Framework>=4.5 创建任何新项目。
- 将 XML 复制到剪贴板。
- 选择"编辑"->"选择性粘贴"->"将 XML 粘贴为类"。
现在您已经生成了类,您不必手动创建它。