c# - 值不能为空。参数名称:元素
问题描述
我正在尝试从 XML 信用报告中提取数据。我需要清除某些条目的能力。
这是我用来尝试获取值列表的代码。
var trades = from x in xmlStr.Descendants("USTrade")
where (int) x.Element("BalanceAmount") > 0
select (int)x.Element("ScheduledPaymentAmount");
示例数据如下所示:
<USTrade>
<ExpandedDataDimensionsReturned code="T" description="Enhanced Trade with All 6.0 Trade Fields" />
<CreditorId>
<CustomerNumber>801ON00630</CustomerNumber>
<Name>BK OF AMER</Name>
<Industry code="ON" description="National Credit Card Cos." />
</CreditorId>
<DateReported format="MM/CCYY">07/2019</DateReported>
<DateOpened format="MM/CCYY">12/2007</DateOpened>
<AccountNumber>4509128960678</AccountNumber>
<HighCreditAmount>0020500</HighCreditAmount>
<BalanceAmount>0000076</BalanceAmount>
<PortfolioType code="R" description="Revolving or Option (open-end account)" />
<Status code="1" description="Pays Acct As Agreed" />
<MonthsReviewed>21</MonthsReviewed>
<AccountDesignator code="I" description="Individual" />
<DateOfLastActivity format="MM/CCYY">07/2019</DateOfLastActivity>
<ScheduledPaymentAmount>0000015</ScheduledPaymentAmount>
<UpdateIndicator code="*" description="Tape" />
<Narratives>
<Narrative code="FE" description="Credit Card" />
<Narrative code="AZ" description="Amount In H/C Column Is Credit Limit" />
</Narratives>
<ExpandedCreditorId>
<Name>BANK OF AMERICA</Name>
</ExpandedCreditorId>
<ExpandedDateReported format="MM/CCYY">07/2019</ExpandedDateReported>
<ExpandedDateOpened format="MM/CCYY">12/2007</ExpandedDateOpened>
<ExpandedCreditLimit>000020500</ExpandedCreditLimit>
<ExpandedBalanceAmount>000000076</ExpandedBalanceAmount>
<ExpandedPortfolioType code="R" description="Revolving or Option (open-end account)" />
<ExpandedStatus code="1" description="Pays Acct As Agreed" />
<ExpandedNarratives>
<Narrative code="FE" description="Credit Card" />
</ExpandedNarratives>
<ExpandedScheduledPaymentAmount>000000015</ExpandedScheduledPaymentAmount>
</USTrade>
<USTrade>
<ExpandedDataDimensionsReturned code="T" description="Enhanced Trade with All 6.0 Trade Fields" />
<CreditorId>
<CustomerNumber>801ON00630</CustomerNumber>
<Name>BK OF AMER</Name>
<Industry code="ON" description="National Credit Card Cos." />
</CreditorId>
<DateReported format="MM/CCYY">10/2018</DateReported>
<DateOpened format="MM/CCYY">12/2007</DateOpened>
<AccountNumber>4509128960565</AccountNumber>
<Status code="B" description="Lost or Stolen Card" />
<DateOfLastActivity format="MM/CCYY">10/2018</DateOfLastActivity>
<UpdateIndicator code="*" description="Tape" />
<Narratives>
<Narrative code="FE" description="Credit Card" />
</Narratives>
<ExpandedCreditorId>
<Name>BANK OF AMERICA</Name>
</ExpandedCreditorId>
<ExpandedDateReported format="MM/CCYY">10/2018</ExpandedDateReported>
<ExpandedDateOpened format="MM/CCYY">12/2007</ExpandedDateOpened>
<ExpandedStatus code="B" description="Lost or Stolen Card" />
<ExpandedNarratives>
<Narrative code="FE" description="Credit Card" />
</ExpandedNarratives>
</USTrade>
我不断收到“值不能为空。参数名称:元素”错误。
当我通过数据挖掘时,我看到一些没有我正在搜索的元素的 USTrades - 这会导致问题吗?如果是这样,我该如何解释?(IE A UsTrade 没有 ScheduledPaymentAmount 元素)
谢谢
解决方案
您可以修改查询以仅搜索具有ScheduledPaymentAmount
元素的对象。例如
var trades = from x in xmlStr.Descendants("USTrade")
where (int) x.Element("BalanceAmount") > 0
and x.Element("ScheduledPaymentAmount") != null
select (int)x.Element("ScheduledPaymentAmount");
推荐阅读
- swift - NSLayoutConstraint 和 VisualFormat 布局
- c# - 将 json 转换为 c# 对象列表时获取空值
- javascript - javascript从新对象中键值对的两级数组中提取id
- javascript - 使用无效字段强制提交表单
- c# - WPF中多ListView的滚动问题
- angular - HTTP拦截器在发送下一个请求之前不等待刷新令牌
- symfony - LexikJWTBundle 无法识别有效的配置密钥
- php - PHP 多维数组和简单数组有什么区别?
- c - 为什么当有多行时,游标提取总是返回顶行?
- node.js - NodeJS 服务器接收 POST 请求