c# LINQ to XML 空值异常

本文关键字:空值 异常 XML to LINQ | 更新日期: 2023-09-27 18:31:10

这是我的代码:

List<Customer> customersList =
                (
                    from e in XDocument.Load(file).Root.Elements("cust")
                    select new Customer
                    {
                        CustomerID = (int)e.Element("custid"),
                        FirstName = (string)e.Element("fname"),
                        LastName = (string)e.Element("lname"),
                        ShowsNumber = (int)e.Element("count_noshow"),
                        VisitNumber = (int)e.Element("count_resos"),
                        Cancellation = (int)e.Element("count_cancel"),
                    }).ToList();

我在代码的customerList = (....)部分得到了{"Value cannot be null.'r'nParameter name: element"}例外,

我可以看到 XML,它在 root 节点下有很多cust节点。

你能帮我吗?

非常感谢此致敬意

更新1

该 XML:

<root source="ERB" versionmajor="5" versionminor="0" filetype="3PCustomer">
    <cust rid="303" custid="5" lname="Test" fname="Test" emailoptin="1" mailoptin="1" datecreated="2006-01-12T15:37:54.450" count_resos="2" count_noshow="0" count_cancel="0">
        <phone phonenumber="408.123.4567" countrycodeid="1" phonetype="Home"/>
        <custcode ccode="Vegetarian"/>
    </cust>
    <cust rid="303" custid="6" lname="John" fname="Doe" email="johnD@ot.com" emailoptin="0" mailoptin="1" cnotes="Half caf double de-caf, with a twist..." datecreated="2006-01-12T17:09:57.013" count_resos="2" count_noshow="0" count_cancel="0">
        <phone phonenumber="456.456.4565" countrycodeid="1" phonetype="Home"/>
        <custcode ccode="Guest Share"/>
    </cust>
    <cust rid="303" custid="7" webcustid="1654438" lname="doe" fname="john" emailoptin="1" mailoptin="1" datecreated="2006-01-13T11:04:25.653" count_resos="1" count_noshow="0" count_cancel="0">
        <phone phonenumber="123.456.7890" countrycodeid="1" phonetype="Home"/>
    </cust>
    <!-- (...) -->
</root>

c# LINQ to XML 空值异常

您正在选择Element(),但是custid,fname等不是元素,而是attributes

像这样更新它:-

List<Customer> customersList =
                (
                    from e in XDocument.Load(file).Root.Elements("cust")
                    select new Customer
                    {
                        CustomerID = (int)e.Attribute("custid"),
                        FirstName = (string)e.Attribute("fname"),
                        LastName = (string)e.Attribute("lname"),
                        ShowsNumber = (int)e.Attribute("count_noshow"),
                        VisitNumber = (int)e.Attribute("count_resos"),
                        Cancellation = (int)e.Attribute("count_cancel"),
                    }).ToList();