C# xmlnodelist到C中的对象列表#

C# xmlnodelist到C中的对象列表#,c#,xml,asp.net-mvc,visual-studio,xml-parsing,C#,Xml,Asp.net Mvc,Visual Studio,Xml Parsing,我正在使用xmldocument读取一个xml文件。 我使用xmlnodelist提取xml的节点。现在,我想将xmlnodelist分配给对象列表“Project”。请告诉我怎么做 <Projects> <Project> <Id>1</Id> <Name>Fabric1</Name> </Project> <Project> <Id>2</I

我正在使用xmldocument读取一个xml文件。 我使用xmlnodelist提取xml的节点。现在,我想将xmlnodelist分配给对象列表“Project”。请告诉我怎么做

<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.
Fabric1
2.
Fabric2
类别:
公共类项目
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
}
代码:
XmlDocument xdoc=新的XmlDocument();
Load(Server.MapPath(“~/Content/abc.xml”);
XmlNodeList ListofProjects=xdoc.SelectNodes(“/Projects/Project”);
var project=新列表();
foreach(项目列表中的xmlnodep)
{
??=p.SelectSingleNode(“Id”).InnerText;
??=p.SelectSingleNode(“名称”).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();
如果可以的话,我强烈建议您使用LINQtoXML,而不是旧的
XmlDocument
API(到目前为止,您真的应该能够…LINQtoXML已经存在很长时间了)

当然,您可以使用当前代码执行此操作:

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):

。。。但我真的不会。

您必须使用
XmlDocument
?如果可以使用LINQtoXML(
XDocument
etc),那么它就很简单了。
foreach (XmlElement p in listofProjests)
{
    string id = p["Id"].InnerText;
    string name = p["Name"].InnerText;
    project.Add(new Project { Id = id, Name = name });
}