[asp.net-mvc]也就是说对在 C# 中的对象的列表

发布时间: 2016/10/5 11:43:59
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在读一个 xml 文件,使用 xmldocument。 我提取 xml 使用也就是说的节点。我想,也就是说现在分配的对象"项目"列表。请让我知道怎么能那样做了。

<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;
                 }

解决方法 1:

如在注释中,你能做这琐细 LINQ 中 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 到 XML,而不是旧 XmlDocument API 如果你可以 (而且到现在为止,你真的应该能到...对 XML LINQ 流传了很时间)。

当然,你可以做它与您当前的代码︰

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 });
}

或稍有更多惊喜 (海事组织)︰

foreach (XmlElement p in listofProjests)
{
    string id = p["Id"].InnerText;
    string name = p["Name"].InnerText;
    project.Add(new Project { Id = id, Name = name });
}

......,但我真的不会。

官方微信
官方QQ群
31647020