c#读XML数据时提示错误:未将对象引用设置到对象的实例。

liguokun 2012-07-24 10:59:41
代码如下:



private void GetProList()
{
//掌柜鑫名品,查看其宝贝列表,我无意冒犯掌柜鑫名品
#region 绑定到GridView1
CreatTable();
myapi = new taobaoApi();
XmlDocument mydoc = myapi.taobao_items_get("", "iid,title,nick,type,cid,pic_path,delist_time,price,post_fee", 0, 0, "鑫名品");
XmlNodeList mylist = mydoc.SelectNodes("rsp/item");


int num = int.Parse(mydoc.SelectSingleNode("/rsp/totalResults").InnerText);

try
{
AddXmlNodesToTable(mylist);

//this.Label1.Text = "共有 " + num.ToString() + " 商品";
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
catch (Exception err)
{
string test = err.Message;
}
#endregion

#region 返回string值,主要是根据string内容,生成xmlnodelist

//myapi = new taobaoApi();
//string mydoc = myapi.taobao_items_get2("", "iid,title,nick,type,cid,pic_path,delist_time,price,post_fee", 0, 0, "鑫名品");
//divMeg.InnerText = mydoc;
#endregion


}




其中执行到这一句 int num = int.Parse(mydoc.SelectSingleNode("/rsp/totalResults").InnerText);
,提示如下错误:

“/TaoBaoAPITest”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 92:
行 93:
行 94: int num = int.Parse(mydoc.SelectSingleNode("/rsp/totalResults").InnerText);
行 95:
行 96: try


源文件: c:\Documents and Settings\stu\桌面\TaoBaoAPITest\TaoBaoAPITest\productlist.aspx.cs 行: 94

堆栈跟踪:


[NullReferenceException: 未将对象引用设置到对象的实例。]
productlist.GetProList() in c:\Documents and Settings\stu\桌面\TaoBaoAPITest\TaoBaoAPITest\productlist.aspx.cs:94
productlist.Page_Load(Object sender, EventArgs e) in c:\Documents and Settings\stu\桌面\TaoBaoAPITest\TaoBaoAPITest\productlist.aspx.cs:31
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436


请问是什么原因哦?
...全文
281 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liguokun 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
贴你的mydoc.OuterXml代码
[/Quote]

taobaoApi的代码如下:


//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Web;
//using System.Xml;

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Xml;
using System.Xml.Linq;
using System.Web;



public class taobaoApi
{
public const string VERSION = "1.0";

private string _sessionID;

#region 构造函数
public taobaoApi()
{
}
public taobaoApi(string sessionID)
{
_sessionID = sessionID;
}
#endregion

#region 属性
//获取session
public string SessionID
{
get
{
if (string.IsNullOrEmpty(HttpContext.Current.Session["sip_sessionid"].ToString()))
{
HttpContext.Current.Session["sip_sessionid"] = Guid.NewGuid().ToString();
}
return HttpContext.Current.Session["sip_sessionid"].ToString();
}
}

#endregion

#region 商品接口




/// <summary>
/// 获取某会员商品列表达式
/// </summary>
/// <param name="q"></param>
/// <param name="fields"></param>
/// <param name="page_no"></param>
/// <param name="page_size"></param>
/// <param name="nicks"></param>
/// <returns></returns>
public XmlDocument taobao_items_get(string q, string fields, int page_no, int page_size, string nicks)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.items.get");

pb.AddParam("fields", fields);//"iid,delist_time"
pb.AddParam("v", VERSION);
if (q != string.Empty)
pb.AddParam("q", q);
if(page_no != 0)
pb.AddParam("page_no", page_no);
if(page_size != 0)
pb.AddParam("page_size", page_size);
// /
pb.AddParam("nicks", nicks);
//if(order_by != "")
// pb.AddParam("order_by", order_by);
string data = pb.GetURL();

return Util.HttpRequest(data);
}

/// <summary>
/// 获取宝贝列表的返回值
/// </summary>
/// <param name="q"></param>
/// <param name="fields"></param>
/// <param name="page_no"></param>
/// <param name="page_size"></param>
/// <param name="nicks"></param>
/// <returns></returns>
public string taobao_items_get2(string q, string fields, int page_no, int page_size, string nicks)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.items.get");

pb.AddParam("fields", fields);//"iid,delist_time"
pb.AddParam("v", VERSION);
if (q != string.Empty)
pb.AddParam("q", q);
if (page_no != 0)
pb.AddParam("page_no", page_no);
if (page_size != 0)
pb.AddParam("page_size", page_size);
// /
pb.AddParam("nicks", nicks);
//if(order_by != "")
// pb.AddParam("order_by", order_by);
string data = pb.GetURL();

return Util.HttpRequest2(data);
}




/// <summary>
///获取当前会话用户(必须为卖家)的出售中商品列表。支持分页。
/// </summary>
/// <param name="q">搜索字段</param>
/// <param name="fields">商品对象字段</param>
/// <param name="page_no">页码</param>
/// <param name="page_size">页显示数量</param>
/// <param name="has_discount">是否参与会员折扣</param>
/// <param name="has_showcase">是否橱窗推荐</param>
/// <returns></returns>
public HttpWebResponse taobao_items_onsale_get(string q, string fields, int page_no, int page_size, bool has_discount, bool has_showcase,string orderby, string cid, string seller_cids)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.items.onsale.get");

pb.AddParam("fields", fields);//"iid,delist_time"
pb.AddParam("v", VERSION);
if (q != string.Empty)
pb.AddParam("q", q);
if (page_no != 0)
pb.AddParam("page_no", page_no);
if (page_size != 0)
pb.AddParam("page_size", page_size);
if (has_discount)
{
pb.AddParam("has_discount", "true");
}
if (has_showcase)
{
pb.AddParam("has_showcase", "true");
}
if (orderby.Length != 0)
pb.AddParam("order_by", orderby);
if (cid.Length != 0)
pb.AddParam("cid", cid);
if (seller_cids.Length != 0)
pb.AddParam("seller_cids", seller_cids);
//pb.AddParam("sip_usertoken", token);
string data = pb.GetURL();
return Util.HttpRequest3(data);
}







#endregion

#region 用户接口

#endregion

#region 店铺接口
/// <summary>
///
/// </summary>

/// <param name="fields"></param>
/// <param name="nicks"></param>
/// <returns></returns>
public XmlDocument taobao_shop_get(string fields, string nicks)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.shop.get");

pb.AddParam("fields", fields);//nick,sex,buyer_credit,seller_credit,location.city,created,real_name,shop_id
pb.AddParam("v", VERSION);
pb.AddParam("nick", nicks);

string data = pb.GetURL();

return Util.HttpRequest(data);
}


//taobao.shop.update
public XmlDocument taobao_shop_update(string _title, string _bulletin, string _desc)
{
Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.shop.update");

pb.AddParam("title", _title);//nick,sex,buyer_credit,seller_credit,location.city,created,real_name,shop_id
pb.AddParam("v", VERSION);
pb.AddParam("bulletin", _bulletin);
pb.AddParam("desc", _desc);
string data = pb.GetURL();

return Util.HttpRequest(data);
}
#endregion



#region 类目属性接口



//taobao.itemcats.get.v2 ok
/// <summary>
/// 获取后台供卖家发布商品的标准商品类目(获取品牌型号)

/// </summary>
/// <param name="parent_cid"></param>
/// <param name="cids"></param>
/// <param name="fields"></param>
/// <returns></returns>
public HttpWebResponse taobao_itemcats_get_v2(string parent_cid, string cids, string fields)
{
Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.itemcats.get.v2");

if (parent_cid.Length != 0 || cids.Length != 0)
{
if (parent_cid != "")
{
pb.AddParam("parent_cid", parent_cid);//

}
if (cids != "")
{
pb.AddParam("cids", cids);//

}
}
pb.AddParam("fields", fields);
pb.AddParam("v", VERSION);
string data = pb.GetURL();

return Util.HttpRequest3(data);
}


#endregion


}


liguokun 2012-07-24
  • 打赏
  • 举报
回复
在吗?
liguokun 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
贴你的mydoc.OuterXml代码
[/Quote]

taobaoApi的代码如下:




using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Xml;
using System.Xml.Linq;
using System.Web;



public class taobaoApi
{
public const string VERSION = "1.0";

private string _sessionID;

#region 构造函数
public taobaoApi()
{
}
public taobaoApi(string sessionID)
{
_sessionID = sessionID;
}
#endregion

#region 属性
//获取session
public string SessionID
{
get
{
if (string.IsNullOrEmpty(HttpContext.Current.Session["sip_sessionid"].ToString()))
{
HttpContext.Current.Session["sip_sessionid"] = Guid.NewGuid().ToString();
}
return HttpContext.Current.Session["sip_sessionid"].ToString();
}
}

#endregion

#region 商品接口




/// <summary>
/// 获取某会员商品列表达式
/// </summary>
/// <param name="q"></param>
/// <param name="fields"></param>
/// <param name="page_no"></param>
/// <param name="page_size"></param>
/// <param name="nicks"></param>
/// <returns></returns>
public XmlDocument taobao_items_get(string q, string fields, int page_no, int page_size, string nicks)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.items.get");

pb.AddParam("fields", fields);//"iid,delist_time"
pb.AddParam("v", VERSION);
if (q != string.Empty)
pb.AddParam("q", q);
if(page_no != 0)
pb.AddParam("page_no", page_no);
if(page_size != 0)
pb.AddParam("page_size", page_size);
// /
pb.AddParam("nicks", nicks);
//if(order_by != "")
// pb.AddParam("order_by", order_by);
string data = pb.GetURL();

return Util.HttpRequest(data);
}

/// <summary>
/// 获取宝贝列表的返回值
/// </summary>
/// <param name="q"></param>
/// <param name="fields"></param>
/// <param name="page_no"></param>
/// <param name="page_size"></param>
/// <param name="nicks"></param>
/// <returns></returns>
public string taobao_items_get2(string q, string fields, int page_no, int page_size, string nicks)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.items.get");

pb.AddParam("fields", fields);//"iid,delist_time"
pb.AddParam("v", VERSION);
if (q != string.Empty)
pb.AddParam("q", q);
if (page_no != 0)
pb.AddParam("page_no", page_no);
if (page_size != 0)
pb.AddParam("page_size", page_size);
// /
pb.AddParam("nicks", nicks);
//if(order_by != "")
// pb.AddParam("order_by", order_by);
string data = pb.GetURL();

return Util.HttpRequest2(data);
}




/// <summary>
///获取当前会话用户(必须为卖家)的出售中商品列表。支持分页。
/// </summary>
/// <param name="q">搜索字段</param>
/// <param name="fields">商品对象字段</param>
/// <param name="page_no">页码</param>
/// <param name="page_size">页显示数量</param>
/// <param name="has_discount">是否参与会员折扣</param>
/// <param name="has_showcase">是否橱窗推荐</param>
/// <returns></returns>
public HttpWebResponse taobao_items_onsale_get(string q, string fields, int page_no, int page_size, bool has_discount, bool has_showcase,string orderby, string cid, string seller_cids)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.items.onsale.get");

pb.AddParam("fields", fields);//"iid,delist_time"
pb.AddParam("v", VERSION);
if (q != string.Empty)
pb.AddParam("q", q);
if (page_no != 0)
pb.AddParam("page_no", page_no);
if (page_size != 0)
pb.AddParam("page_size", page_size);
if (has_discount)
{
pb.AddParam("has_discount", "true");
}
if (has_showcase)
{
pb.AddParam("has_showcase", "true");
}
if (orderby.Length != 0)
pb.AddParam("order_by", orderby);
if (cid.Length != 0)
pb.AddParam("cid", cid);
if (seller_cids.Length != 0)
pb.AddParam("seller_cids", seller_cids);
//pb.AddParam("sip_usertoken", token);
string data = pb.GetURL();
return Util.HttpRequest3(data);
}







#endregion

#region 用户接口

#endregion

#region 店铺接口
/// <summary>
///
/// </summary>

/// <param name="fields"></param>
/// <param name="nicks"></param>
/// <returns></returns>
public XmlDocument taobao_shop_get(string fields, string nicks)
{

Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.shop.get");

pb.AddParam("fields", fields);//nick,sex,buyer_credit,seller_credit,location.city,created,real_name,shop_id
pb.AddParam("v", VERSION);
pb.AddParam("nick", nicks);

string data = pb.GetURL();

return Util.HttpRequest(data);
}


//taobao.shop.update
public XmlDocument taobao_shop_update(string _title, string _bulletin, string _desc)
{
Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.shop.update");

pb.AddParam("title", _title);//nick,sex,buyer_credit,seller_credit,location.city,created,real_name,shop_id
pb.AddParam("v", VERSION);
pb.AddParam("bulletin", _bulletin);
pb.AddParam("desc", _desc);
string data = pb.GetURL();

return Util.HttpRequest(data);
}
#endregion



#region 类目属性接口



//taobao.itemcats.get.v2 ok
/// <summary>
/// 获取后台供卖家发布商品的标准商品类目(获取品牌型号)

/// </summary>
/// <param name="parent_cid"></param>
/// <param name="cids"></param>
/// <param name="fields"></param>
/// <returns></returns>
public HttpWebResponse taobao_itemcats_get_v2(string parent_cid, string cids, string fields)
{
Util.ParamsBuild pb = new Util.ParamsBuild(SessionID, "taobao.itemcats.get.v2");

if (parent_cid.Length != 0 || cids.Length != 0)
{
if (parent_cid != "")
{
pb.AddParam("parent_cid", parent_cid);//

}
if (cids != "")
{
pb.AddParam("cids", cids);//

}
}
pb.AddParam("fields", fields);
pb.AddParam("v", VERSION);
string data = pb.GetURL();

return Util.HttpRequest3(data);
}


#endregion


}


孟子E章 2012-07-24
  • 打赏
  • 举报
回复
贴你的mydoc.OuterXml代码
孟子E章 2012-07-24
  • 打赏
  • 举报
回复
mydoc.SelectSingleNode("/rsp/totalResults")的结果是 null了
孟子E章 2012-07-24
  • 打赏
  • 举报
回复
那些代码没有用,你就看
myapi = new taobaoApi();
XmlDocument mydoc = myapi.taobao_items_get("", "iid,title,nick,type,cid,pic_path,delist_time,price,post_fee", 0, 0, "鑫名品")

这里返回的mydoc 的内容。可以没有返回内容或者返回的格式不一样
续写经典 2012-07-24
  • 打赏
  • 举报
回复
一般这种情况都是没有实例化或值为空

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧