C#LINQ to XML空值异常 [英] c# LINQ to XML null value exception
本文介绍了C#LINQ to XML空值异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的代码:
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"}
异常,
I got {"Value cannot be null.\r\nParameter name: element"}
exception on the customerList = (....)
part of the code,
我可以看到XML,它在root
节点下有很多cust
节点.
I can see the XML, it has a lot of cust
nodes under the root
node.
你能帮我吗?
非常感谢 最好的问候,
Many thanks Best regards,
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>
推荐答案
您选择的是Element()
,但custid,fname等不是元素,而是attributes
.
You are selecting Element()
, but custid, fname, etc.are not elements rather they are 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();
这篇关于C#LINQ to XML空值异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文