在我的项目中,遗留代码生成具有以下结构的 xml:
<Output>
<Template recordID=12>
<Employer type="String">
<Value>Google</Value>
<Value>GigaSoft inc.</Value>
</Employer>
<Designation type="String">
<Value>Google</Value>
</Designation>
<Duration type="String" />
</Template>
</Output>
我想将此 xml 反序列化为具有以下属性的对象(我正在使用 C#):
public class EmployerInfo
{
string[] _employerName;
string[] _designation;
string _duration;
}
我尝试使用成员周围的以下属性来反序列化上述 xml(注意:我已经简化了代码。我知道我们不应该公开数据成员。此代码仅用于实验目的)
[XmlElement("Template")]
public class EmployerInfo
{
[XmlElement("Employer")]
public string[] _employerName;
[XmlElement("Designation")]
public string[] _designation;
[XmlElement("Duration")]
public string _duration;
}
为了反序列化,我在主类中写道:
XmlSerializer serial = new XmlSerializer(typeof(Output));
TextReader reader = new StreamReader(@"C:\sample_xml.xml");
EmployerInfo fooBar = (EmployerInfo)serial.Deserialize(reader);
reader.Close();
执行上述代码后,fooBar 对象中的所有成员都设置为 null(默认值)。我认为这是因为 xml 结构与类结构不匹配。
我尝试使用 xsd 命令自动生成类,但它为每个数据成员创建了单独的类。
我试图给元素名称,如 XmlElement("Employer.Value") , XmlElement("Template.Employer.Value") 但这也没有用。
任何人都可以建议一些方法来将此 xml 放入一个EmployerInfo
类中吗?
提前致谢