我正在尝试从XML中提取数据。我使用此XML文件的XSD生成了C#类。我试图从XML文件中获取数据并将其保存为C#类。 我遇到了NULLReferenceException被用户取消了; “你调用的对象是空的。”错误。
我的XML文件
<clue_personal_auto xmlns = "http://cp.com/rules/client">
<admin>
<quoteback name="trackingNUmber">67890 </quoteback>
</admin>
<report>
<inquiry_processing_summary>
<classification> inqiury </classification>
</inquiry_processing_summary>
<results_dataset>
<claims_history type="Subject Section">
<claim id = "s1" unit-number="1" sequence-number="1" number="11111">
<scope_of_claim>Full Scope</scope_of_claim>
<claim_date>05/19/2005</claim_date>
<claim_age years="1" months="10"/>
<clue_file_number>222221</clue_file_number>
<policy number="XX111111">
<issuer> CUSTOMER TEST </issuer>
<auto_type> Personal Auto</auto_type>
<fsi_issuer>Field absent on inquiry</fsi_issuer>
</policy>
<subject classification="POlicy HOlder">
<name>
<first>SADIE</first>
<last>DOE</last>
<fsi_first>Discrepancy</fsi_first>
<fsi_middle>Field absent on inquiry and rport</fsi_middle>
<fsi_last>Match</fsi_last>
<fsi_suffix>Field absent on inquiry and report</fsi_suffix>
</name>
<ssn>123456789</ssn>
<driversLicense number="999999999" state="GA">
<fsi_state>Field abscent on inquiry</fsi_state>
<fsi_number>Field absent on inquiry</fsi_number>
</driversLicense>
</subject>
<claimPayment amount_paid="2841.00" type="Collision" disposition="Open"/>
<claimPayment amount_paid="0.00" type="Physical/Property Damage" disposition="Open"/>
<claim_association_indicator>Indicates the Vehicle Operator was the person matched </claim_association_indicator>
<vehicle>
<model_year>1995</model_year>
<model_make>Nissan Sentra</model_make>
<vin> 9N9ABC99D434kjlkfajsdkl</vin>
<disposition>Not Reported </disposition>
<fsi_model_year>Field absent on inquiry and report</fsi_model_year>
<fsi_model_make>Field absent on inquiry and report</fsi_model_make>
<fsi_vin>Field absenton inquiry and report</fsi_vin>
</vehicle>
</claim>
<claim id = "s2" unit-number="2" sequence-number="2" number="22222">
<scope_of_claim>Limited scope</scope_of_claim>
</claim>
<claim id = "s3" unit-number="3" sequence-number="3" number="33333">
</claim>
</claims_history>
<inquiry_history name ="GO America" id="1" date="09/10/2010"/>
</results_dataset>
</report>
我的查询:
List<results_dataset> resultdatasets =
(from b in query.Descendants(xmlns + "results_dataset")
select new results_dataset
{
claimsHistory =
(from c in query.Descendants(xmlns + "claims_history")
select new Claims_history
{
claim = (from d in query.Descendants(xmlns + "claim")
select new Claim ()
{
policy = ( from e in query.Descendants(xmlns + "policy")
**select new cluePolicyType()
{
issuer = e.Element("issuer").Value ,
number = e.Attribute("number").Value ,
auto_type = e.Element("auto_type").Value,
fsi_issuer= e.Element("fsi_issuer").Value,
} **
).ToList(),
scope_of_claim = d.Element("scope_of_claim").Value,
type = c.Attribute("type").Value
}).ToList()
}
).ToList();
********之间的区域是我收到此错误的地方。如果我删除******** {}区域内的代码,则没有错误。我无法理解。这让我发疯了。
答案 0 :(得分:2)
所以你已经把问题减少到了以下几行:
issuer = e.Element("issuer").Value ,
number = e.Attribute("number").Value ,
auto_type = e.Element("auto_type").Value,
fsi_issuer= e.Element("fsi_issuer").Value
无法测试您的代码,我的猜测是元素或属性(issuer / number / auto_type / fsi_issuer)对于您的某些元素根本不存在。如果找不到指定的属性,它将返回null,这将在你解析.Value
时抛出你的NRE。