Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从XML加载子元素列表?_C#_Xml_List_Xelement - Fatal编程技术网

C# 如何从XML加载子元素列表?

C# 如何从XML加载子元素列表?,c#,xml,list,xelement,C#,Xml,List,Xelement,我需要在每个查询中列出行项目。下面我只得到查询的值,而不是它的行项目列表 XElement myElement = XElement.Load("Inquiries.xml"); var query = from s in myElement.Elements("Inquiry") select new { InquiryId = (int)s.Ele

我需要在每个查询中列出行项目。下面我只得到查询的值,而不是它的行项目列表

 XElement myElement = XElement.Load("Inquiries.xml");
        var query = from s in myElement.Elements("Inquiry")
                    select new
                    {
                        InquiryId = (int)s.Element("InquiryId"),
                        FirstName = (string)s.Element("FirstName"),
                        LastName = (string)s.Element("LastName"),
                        LineItems = from l in myElement.Elements("Inquiry").Elements("LineItems")
                                   select new
                                   {
                                       Quantity = (int)l.Attribute("quantity"),
                                       PartNumber = (string)l.Attribute("partnumber")
                                   }

                    };

        var result = query.ToList();
XML:


0
约翰
史密斯
1.
史诗
贝尔德曼
这应该可以:

    public void Test()
    {
        var inquiries = XElement.Load("Test.xml").Elements("Inquiry")
            .Select(i => new Inquiry
                        {
                            InquiryId = int.Parse(i.Element("InquiryId").Value),
                            FirstName = i.Element("FirstName").Value,
                            LastName = i.Element("LastName").Value,
                            LineItems = i.Elements("LineItems").Descendants()
                                .Select(li => new LineItem
                                    {
                                        Quantity = int.Parse(li.Attribute("quantity").Value),
                                        PartNumber = li.Attribute("partnumber").Value
                                    }).ToList()
                        }).ToList();
    }
}

public class Inquiry
{
    public int InquiryId { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public List<LineItem> LineItems { get; set; }
}

public class LineItem
{
    public int Quantity { get; set; }

    public string PartNumber { get; set; }
}
公共无效测试()
{
var查询=XElement.Load(“Test.xml”).Elements(“查询”)
.选择(i=>新查询
{
InquiryId=int.Parse(i.Element(“InquiryId”).Value),
FirstName=i.Element(“FirstName”).Value,
LastName=i.Element(“LastName”).Value,
LineItems=i.Elements(“LineItems”).subjects()
.选择(li=>new LineItem
{
数量=int.Parse(li.Attribute(“数量”).Value),
PartNumber=li.Attribute(“PartNumber”).Value
})托利斯先生()
}).ToList();
}
}
公开课查询
{
公共int查询ID{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共列表行项目{get;set;}
}
公共类行项目
{
公共整数数量{get;set;}
公共字符串零件号{get;set;}
}

但如何将子元素的属性放入列表?您需要列表显示哪些属性?数量和零件号,但我需要它们作为查询列表中的列表。这很有效,谢谢。我必须研究多元化,因为我对它们感到困惑。
    public void Test()
    {
        var inquiries = XElement.Load("Test.xml").Elements("Inquiry")
            .Select(i => new Inquiry
                        {
                            InquiryId = int.Parse(i.Element("InquiryId").Value),
                            FirstName = i.Element("FirstName").Value,
                            LastName = i.Element("LastName").Value,
                            LineItems = i.Elements("LineItems").Descendants()
                                .Select(li => new LineItem
                                    {
                                        Quantity = int.Parse(li.Attribute("quantity").Value),
                                        PartNumber = li.Attribute("partnumber").Value
                                    }).ToList()
                        }).ToList();
    }
}

public class Inquiry
{
    public int InquiryId { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public List<LineItem> LineItems { get; set; }
}

public class LineItem
{
    public int Quantity { get; set; }

    public string PartNumber { get; set; }
}
XElement myElement = XElement.Load("Inquiries.xml");
var query = from s in myElement.Elements("Inquiry")
            select new
            {
                InquiryId = Convert.ToInt32(s.Element("InquiryId").Value),
                FirstName = s.Element("FirstName").Value,
                LastName = s.Element("LastName").Value,
                LineItems = (from l in s.Element("LineItems").Elements("LineItem")
                            select new
                            {
                                Quantity = Convert.ToInt32(l.Attribute("quantity").Value),
                                PartNumber = l.Attribute("partnumber").Value
                            }).ToList()

            };

var result = query.ToList();