[英]How to use xml id to fill class object?
我在 C# 中有以下類定義:
class Supervisor
{
public string Id { set; get; }
public string Name { set; get; }
public int Contracts { set; get; }
public long Volume { set; get; }
public int Average { get; }
}
我也有這個 xml 文件:
<digital-sales xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<supervisor id="1236674">
<Name>Hiroki</Name>
<Contract>11</Contract>
<Volume>1036253</Volume>
<Average>94205</Average>
</supervisor>
<supervisor id="123459">
<Name>Ayumi</Name>
<Contract>5</Contract>
<Volume>626038</Volume>
<Average>125208</Average>
</supervisor> ...
</digital-sales>
在 main 中,我為每個主管創建對象並通過搜索 id 填充其數據。 但是我總是得到 null 結果。 這是我的主要方法:
static void Main(string[] args)
{
// load the document
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:\Users\Hideki\ShinDeta.xml");
Supervisor ayumi = new Supervisor();
// this line return null
XmlNode ayumiNode = xmlDoc.GetElementById("1236674");
// ayumi.Id = (supply expression here);
// ayumi.Name = (supply expression here);
// ayumi.Contracts = (supply expression here);
// ayumi.Volume = (supply expression here);
// ayumi.Average = (supply expression here);
}
有人可以指出我實現這一目標的最短方法嗎? 沒有 linq 語法,我根本不熟悉它。
您可以使用Xml 序列化來完成此操作。 這是一個例子
[XmlType("supervisor")]
public class Supervisor
{
[XmlAttribute("id")]
public string Id { set; get; }
public string Name { set; get; }
[XmlElement("Contract")]
public int Contracts { set; get; }
public long Volume { set; get; }
public int Average { set; get; }
}
static void Main(string[] args)
{
try
{
XmlSerializer xs = new XmlSerializer(typeof(List<Supervisor>), new XmlRootAttribute("digital-sales"));
using (FileStream fileStream = new FileStream(@"C:\temp\ShinDeta.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
{
var supervisors = xs.Deserialize(fileStream) as List<Supervisor>;
foreach (Supervisor supervisor in supervisors)
{
Debug.WriteLine($"Id: {supervisor.Id}, Name: {supervisor.Name}");
}
}
}
catch(Exception e)
{
Debug.WriteLine(e.Message);
}
}
這輸出:
Id: 1236674, Name: Hiroki
Id: 123459, Name: Ayumi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.