关于Linq到Xml查询的帮助

本文关键字:帮助 查询 Xml Linq 关于 | 更新日期: 2023-09-27 17:53:21

我在使用XDocument.Parse(myXmlString(生成的XDocument中有以下xml(通过签入调试器确认(

<Size>
    <row SizeId="239" Title="XXS" Quantity="20"/>
    <row SizeId="240" Title="XS" Quantity="15"/>
    <row SizeId="241" Title="S" Quantity="12"/>
    <row SizeId="242" Title="M" Quantity="18"/>
</Size>

我正在尝试将其转换为声明为的对象列表

public class SizeQuantityXml
{
    public int SizeId { get; set; }
    public string Title { get; set; }
    public int Quantity { get; set; }
}

但当我这样做时,sizeQuantityXmlList中只有第一个"行":

List<SizeQuantityXml> sizeQuantityXmlList = 
(from x in xDocument.Descendants("Size")
 select new SizeQuantityXml() { SizeId = (int)x.Element("row").Attribute("SizeId"),
                                Title = (string)x.Element("row").Attribute("Title"),
                                Quantity = (int)x.Element("row").Attribute("Quantity") }
).ToList();

这是我的第一次Linq到XML的尝试,非常感谢任何建议:-(

关于Linq到Xml查询的帮助

您正在查询Size元素——您只得到一个。您想要的是行集合:

var query = from row in xDocument.Element("Size").Descendants("row")
            select new SizeQuantityXml()
            { 
                SizeId = (int)row.Attribute("SizeId"),
                Title = (string)row.Attribute("Title"),
                Quantity = (int)row.Attribute("Quantity") 
            };
var sizeQuantityXmlList = query.ToList();

编辑:

如果您的XML与您发布的不同(例如,被更多的父标记包装(,则所提出的解决方案将不起作用。尝试最初提出的Descendants("Size").Descendants("row")