我有这个类和xml文件,我用它来获取值。
<Task>
<Employee Id="123">
<string>/Name</string>
<string>/Company</string>
</Employee>
<Manager Id="456">
<string>/Name</string>
<string>/Company</string>
</Manager>
</Task>
public class Task
{
public List<string> Employee;
public List<string> Manager;
}
var taks = (Task)new XmlSerializer(typeof(Task)).Deserialize(streamReader);
所以,在任务中,我正在使用Name和Compnay作为值获取 Employee 的列表。我想获得每个元素的Id。我怎么得到它?
/姓名和/公司可以是任何东西。我可以在那里放任何价值,我在员工中得到它,甚至没有为它创建一个属性。对于Manager也一样,我可以有/ Email,/ Website,/ LastLogin等,我在Manager对象中得到它,甚至没有为它创建属性。
感谢您的时间和帮助。
答案 0 :(得分:2)
按如下方式定义Task
课程:
public class Task
{
public Employee Employee;
public Manager Manager;
}
Employee
的位置:
public class Employee
{
[XmlAttribute]
public string Id {get;set;}
public string Name{get;set;}
public string Company{get;set;}
}
Manager
是:
public class Manager
{
[XmlAttribute]
public string Id {get;set;}
public string Name{get;set;}
public string Company{get;set;}
}
如果您对Employee
和/或Manager
的通用属性列表感兴趣,请考虑使用另一个名为Property
的类,如下所示:
public class Property
{
[XmlAttribute]
public string Value{get;set;}
}
然后,将Manager
和Employee
更改为以下内容:
public class Employee
{
[XmlAttribute]
public string Id {get;set;}
public List<Property> Properties {get;set;}
}
public class Manager
{
[XmlAttribute]
public string Id {get;set;}
public List<Property> Properties {get;set;}
}
最后,按以下方式更改XML:
<Task>
<Employee Id="123">
<Properties>
<Property Value="/Name" />
<Property Value="/Company"/>
</Properties>
</Employee>
<Manager Id="456">
<Properties>
<Property Value="/Name" />
<Property Value="/Company"/>
</Properties>
</Manager>
</Task>