我正在使用 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/

10-11 22:03