我正在使用 xmldocument 读取 xml 文件。
我使用xmlnodelist提取了xml的节点。我现在想将 xmlnodelist 分配给“项目”对象列表。请让我知道我该怎么做。
<Projects>
<Project>
<Id>1</Id>
<Name>Fabric1</Name>
</Project>
<Project>
<Id>2</Id>
<Name>Fabric2</Name>
</Project>
</Projects>
Class :
public class Project
{
public string Id { get; set; }
public string Name { get; set; }
}
Code :
XmlDocument xdoc = new XmlDocument();
xdoc.Load(Server.MapPath("~/Content/abc.xml"));
XmlNodeList listofProjests = xdoc.SelectNodes("/Projects/Project");
var project = new List<Project>();
foreach (XmlNode p in listofProjests)
{
?? = p.SelectSingleNode("Id").InnerText;
?? = p.SelectSingleNode("Name").InnerText;
}
最佳答案
正如我在评论中指出的,您可以在 LINQ to XML 中轻松完成此操作:
var projects = XDocument
.Load(Server.MapPath("~/Content/abc.xml"))
.Root
.Elements("Project")
.Select(p => new Project {
Id = (string) p.Element("Id"),
Name = (string) p.Element("Name")
})
.ToList();
如果可以,我强烈建议您使用 LINQ to XML 而不是旧的
XmlDocument
API(现在,您真的应该能够...... LINQ to XML 已经存在很长时间了)。当然,你可以用你当前的代码来做:
foreach (XmlNode p in listofProjests)
{
string id = p.SelectSingleNode("Id").InnerText;
string name = p.SelectSingleNode("Name").InnerText;
project.Add(new Project { Id = id, Name = name });
}
或者更愉快一点(IMO):
foreach (XmlElement p in listofProjests)
{
string id = p["Id"].InnerText;
string name = p["Name"].InnerText;
project.Add(new Project { Id = id, Name = name });
}
……但我真的不会。
关于c# - xmlnodelist 到 C# 中的对象列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32417302/