繁体   English   中英

用 C# 列出 XML

[英]XML to List in C#

这是xml:

<Packages>
  <Package>
    <Id>1</Id>
    <Prerequisites>
      <Prerequisite>7</Prerequisite>
      <Prerequisite>8</Prerequisite>
    </Prerequisites>
  </Package>
    <Package>
    <Id>2</Id>
    .....
  </Package>
  ....
</Packages>

和名单:

class lista
{
public int id {get; set;}
public List<int> pre{get;set;}
}

如何将这个 xml 模式添加到 lista 类的列表中,这是我到目前为止所得到的 bot 它只将一个放在第二个列表中。

XDocument xdoc = XDocument.Load("Employee.xml");
        var ListPckage =
            (from item in xdoc.Descendants("Package")
             orderby item.Element("Id").Value
             select new
             {
                 Id = item.Element("Id").Value,
                 Prerequisite = item.Element("Prerequisites").Element("Prerequisite").Value,
             }).ToList();

foreach 为他们服务

foreach (var item in ListPckage)
{
Console.WriteLine(item.Id);
foreach (var item1 in ListPckage)
{
Console.WriteLine(item1.Prerequisites);
}
}

正如 John Sket 在对该问题的评论中提到的,实现这一目标的一种方法是使用Linq To Xml

//string xcontent = @"xml content here";
//XDocument xdoc = XDocument.Parse(xcontent);
XDocument xdoc = XDocument.Load("FullPathToXml");
List<lista> resultlist = xdoc.Descendants("Package")
    .Select(x=> new lista
         {
             id = Convert.ToInt32(x.Element("Id").Value),
             pre = x.Descendants("Prerequisite").Select(y=>Convert.ToInt32(y.Value)).ToList()
          })
    .ToList();

但是,我建议使用XmlSerialization/XmlDeserialization

首先使用 XDocument.Parse 将 XML 解析为 XDocument 以获取 XDocument 变量中的 XML,即

var requiredXml = XDocument.Parse("Xml String here")

然后你可以使用 LINQ to Xml(类似的东西)如下:

//may be syntactic error but you can get an idea

var requiredList = 
from element in requiredXml.Descandants("Package")
Select new lista { id = element.Element("ID").Value, 
pre = element.Elements("Prerequisite").Select(x=> Convert.ToInt32(x.Value)).ToList() }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM