为了账号安全,请及时绑定邮箱和手机立即绑定

XDocument 在尝试获取其值之前检查数据

XDocument 在尝试获取其值之前检查数据

C#
互换的青春 2021-11-14 17:27:46
请检查下面的 c# 代码。在这里,我从以下 xml 示例中获取 UPC、EAN 值的值。但当前代码的问题是有一段时间 UPC,EAN 值在 xml 中不可用,然后我得到错误 - 对象未设置为实例......所以我的问题是我如何在尝试之前检查 UPC EAN 如果为空抢夺它的价值?所以我没有得到这样的缺失数据错误?有什么解决办法吗?C# 代码:Stream requestStream = request.GetRequestStream();requestStream.Write(bytes, 0, bytes.Length);requestStream.Close();using (var response = (HttpWebResponse)request.GetResponse()){    if (response.StatusCode == HttpStatusCode.OK)    {        Stream responseStream = response.GetResponseStream();        string responseStr = new StreamReader(responseStream).ReadToEnd();        responseStream.Flush();        responseStream.Close();        XDocument doc = XDocument.Parse(responseStr);        XNamespace ns = doc.Root.GetDefaultNamespace();        string UPC = "";        string EAN = "";        if (doc.Descendants(ns + "Ack").FirstOrDefault().Value != "Failure")        {            UPC = doc.Descendants(ns + "UPC").FirstOrDefault().Value;            EAN = doc.Descendants(ns + "EAN").FirstOrDefault().Value;        }XML:<?xml version="1.0" encoding="UTF-8"?><GetItemResponse xmlns="urn:ebay:apis:eBLBaseComponents"><Timestamp>2018-08-04T09:36:11.502Z</Timestamp><Ack>Success</Ack><Version>1069</Version><Build>E1069_CORE_API_18748854_R1</Build><Item>    <ProductListingDetails>        <ISBN>Does not apply</ISBN>        <UPC>732030007789</UPC>        <BrandMPN>            <Brand>Ommani</Brand>            <MPN>H0149-OM</MPN>        </BrandMPN>        <IncludeeBayProductDetails>true</IncludeeBayProductDetails>    </ProductListingDetails></Item></GetItemResponse>错误图片:
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您正在使用FirstOrDefault(),这表明您知道它可能不存在 - 但是您无条件地推迟使用该Value属性,这将导致NullReferenceExceptionifFirstOrDefault()返回 null。

两种选择:

  • 使用空条件运算符:

    UPC = doc.Descendants(ns + "UPC").FirstOrDefault()?.Value;
  • 使用从XElementto的显式转换string,这将为空输入返回空输出:

    UPC = (string) doc.Descendants(ns + "UPC").FirstOrDefault();

在这两种情况下,UPC如果没有这样的元素,最终都会为 null。


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信