[英]XML Serialization of member variable as xmlnode
我有一些XML,我想序列化到一個類。
<Group>
<Employees>
<Employee>
<Name>Hari</Name>
<Age>30</Age>
</Employee>
<Employee>
<Name>Yougov</Name>
<Age>31</Age>
</Employee>
<Employee>
<Name>Adrian</Name>
<Age>28</Age>
</Employee>
</Employees >
上面的XML可以很容易地在C#中實現。 但我偶然發現了我的要求,XML的樣子,
<Group>
<Employees>
<Hari Age=30 />
<Yougov Age=31 />
<Adrian Age=28 />
</Employees >
</Group>
Employees是List<Employee>
的KeyValuePair<string, int>("Hari", 30)
如何設計類和成員變量以獲取上面的序列化XML? (前提是,員工名單中不會有任何重復的名稱)
任何幫助深表感謝。
在你的情況下,我會選擇Linq2Xml。
XDocument xDoc = XDocument.Load(......);
var emps = xDoc.Descendants("Employees").Elements()
.Select(x => new Employee() {
Name = x.Name.ToString(),
Age = int.Parse(x.Attribute("Age").Value)
})
.ToList();
PS: Age=30
無效。 它應該是Age="30"
將數據用作模式不是一個好主意; 特別是,許多名稱作為xml元素名稱無效 ,但也是:它只是不好的做法(例如,它使它在模式驗證方面幾乎無用)。 如果你想要簡潔,可能是這樣的:
<Employees>
<Add Name="Hari" Age="30" />
</Employees>
要么
<Employees>
<Employee Name="Hari" Age="30" />
</Employees>
這可以簡單地用:
[XmlArray("Employees"), XmlArrayItem("Employee")]
public List<Employee> Employees {get;set;}
和:
public class Employee {
[XmlAttribute]
public string Name {get;set;}
[XmlAttribute]
public int Age {get;set;}
}
XmlSerializer
不支持“內容作為元素名稱”序列化程序,除非您使用來自父元素的 IXmlSerializable
自己完成所有操作(它必須來自父元素 ,因為XmlSerializer
無法識別要處理的子元素 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.