C# 检查响应中是否存在值。易趣API

C# 检查响应中是否存在值。易趣API,c#,xml,soap,nullreferenceexception,C#,Xml,Soap,Nullreferenceexception,我在开发应用程序时遇到问题。 我正在使用eBay API获取卖家列出的物品的相关信息。我使用的调用名为“GetSellerList” 如果项目有可用的FreeAddedCategory,则响应可能包含名为“CategoryID”(FreeAddedCategory.CategoryID)的值。您会发现这样的XML作为响应: <ItemArray> <Item> <FreeAddedCategory> <CategoryID>

我在开发应用程序时遇到问题。 我正在使用eBay API获取卖家列出的物品的相关信息。我使用的调用名为“GetSellerList”

如果项目有可用的FreeAddedCategory,则响应可能包含名为“CategoryID”(FreeAddedCategory.CategoryID)的值。您会发现这样的XML作为响应:

<ItemArray>
  <Item>
    <FreeAddedCategory>
      <CategoryID>XXXXXXXXX</CategoryID>
    </FreeAddedCategory>
  </Item>
</ItemArray>
但此检查也会显示相同的错误消息。我该怎么做才能使代码正常工作?逻辑应该是这样的:

IF item.FreeAddedCategory.CategoryID exist
  {
      do everything that needs to be done
  }
ELSE skip;
尝试:


或者使用
CategoryId
,如果这对您的情况更有意义。

几乎所有
NullReferenceException
的情况都是相同的。请参阅“”以获取一些提示。问题已解决。我在Chuck的回答下面写下了我的解决方案。是的,这是一个愚蠢的初学者错误;)对不起,恰克,谢谢你的快速回复。我的错误真的很愚蠢!我没有选择“item.FreeAddedCategory.CategoryID”作为“null”,而是选择了“item.FreeAddedCategory”。因为“item.FreeAddedCategory”已经是“null”,所以当我尝试访问“item.FreeAddedCategory.CategoryID”时,我确实得到了NullReferenceException。
IF item.FreeAddedCategory.CategoryID exist
  {
      do everything that needs to be done
  }
ELSE skip;
XElement root = XElement.Load(file); // .Parse(string);
if (root.Descendants("FreeAddedCategory").Any())
{
   // do exists
}
else
{
   // doesn't exist
}