将复杂类型XML转换为类
本文关键字:转换 XML 复杂 类型 | 更新日期: 2023-09-27 17:57:59
我想知道如何将这种复杂类型的xml转换为一个或多个类?
我在下面尝试了一下,我想知道是否有人可以帮我仔细检查一下?
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<lot_information lot_exp_date="XXXX-XX-XX" lot_number="123456">
<components>
<component control="A" ref="A" family="XXXXX" component="12" id="1A1">
<target>42</target>
<min>12</min >
<max>90</max>
<number>10</number>
</component>
<component control="A" ref="A" family="XXXXX" component="13" id="1A2B3C">
<target>42</target>
<min>12</min>
<max>90</max>
<number>10</number>
</component>
</components>
<families>
<control family="XXXXX" ctrl="ctrlA"/>
<control family="XXXXX" ctrl="ctrlB"/>
<control family="XXXXX" ctrl="ctrlC"/>
<control family="XXXXX" ctrl="ctrlD"/>
</families> </lot_information>
这是我的模型类:
[Serializable]
public class LotInformation
{
public string exp_date { get; set; }
public Array[] lot_information { get; set; }
public int lot_number {get; set;}
}
[Serializable]
public class Components {
public Array[] ComponentControl { get; set; }
public string ref { get; set; }
public string family { get; set; }
public int component { get; set; }
public string id { get; set; }
}
[Serializable]
public class Family
{
private string[] controlFamily { get; set; }
private string ctrl { get; set; }
}
只要仔细检查一下,如果我使用数组来保持XML文件的结构为该格式,这是否有意义。
最终,这将被反序列化,所以我想知道上面的内容是否有意义。
编辑:请不要评论自动化工具来帮助我。它们会让事情变得更复杂。我想写干净的代码,看看我所拥有的是否有意义。自动化工具为我提供了无符号整数、空名称空间和其他不必要的改进。
您的xml数据当前无效,将<Components>
更改为<components>
应该有效。
如果您有Visual studio 2013,则可以将XML粘贴到类中。可能看起来很难看,但至少你应该确保它是正确的。
复制XML数据,然后在Visual studio中复制。编辑->粘贴特殊->将XML粘贴为类
编辑
使用代码示例更新这是我清理自动生成的代码时得到的,没有关于字段是否来自XML中的属性的信息。这可以通过属性的注释进行更新。
我通过将类型简化为字符串或int来清理代码,并使用自动属性而不是显式属性,并删除了自动生成的xml属性。
[Serializable]
public class Lot_information {
public Component[] components { get; set; }
public Control[] families { get; set; }
public string lot_exp_date { get; set;}
public int lot_number { get; set;}
}
[Serializable]
public class Component {
public int target { get; set; }
public int min { get; set; }
public int max { get; set; }
public int number { get; set; }
public string control { get; set; }
public string @ref { get; set; }
public string family { get; set; }
public int component { get; set; }
public string id { get; set; }
}
[Serializable]
public class Control {
public string family { get; set; }
public string ctrl { get; set; }
}
您可以使用XSD.EXE工具
- Xsd yourxml.xml
以获取您的xml.xsd文件。然后
- Xsd yourxml.Xsd/classes
这将自动生成类文件。