本人通过Webservice调用一个网站的API时,返回的数据类型是object[],但是我调试的时候查看里面的具体内容时,发现其实是一些XML内容,调试的时候有一项InnerXML的值如图:
请问怎样才能获取里面的值?XMLWeb服务webservice

解决方案 »

  1.   


    上图中rs是webservice的返回值,该怎么处理?
      

  2.   

    怎么rs[0],和rs[1]的内容好像还不一样,这是怎么回事?
      

  3.   

    我获取结果的代码:
    object[] rs = sv.createSubmission("××", "××", Code, 11, null, true, true);
    接下来该怎么处理,sv.createSubmission()返回值是object[]类型的。
      

  4.   

    你去调用的一般是WebServers的查询吧,他返回的是一个Table为父节点的XML可扩展标记语言吧,你一般是通过Ajax调用的吗?结合jQuery很好获取到值的,先到源网站上找出他的节点名称,然后这样写:
    $.post("webserversaddress","",function(result){
      var array=$(result).find("Table") //这里有很多节点总之想办法定位到那个节点就行了。一般这一步都可以获取到一个数组。
       array[...]  //获取自己想要的数据。});
      

  5.   


    string responseXml = HttpRequest(requestXml);                //上游异常错误
                    if (string.IsNullOrEmpty(responseXml))
                    {
                        item.ResultCode = "00011";
                        item.ResultMsg = "上游提交返回异常";
                        response.Add(item);
                        return response;
                    }
                    XmlDocument xmlResult = new XmlDocument();
                    xmlResult.InnerXml = responseXml;
                    //开始解析xml(返回错误代码的时候)                XmlNode errNode = xmlResult.SelectSingleNode("//Error");
                    if (errNode != null)
                    {
                        item.ResultCode = "18002";
                        item.ResultMsg = errNode.SelectSingleNode("//Error").Attributes["Code"].Value + "|" + errNode.SelectSingleNode("//Error").InnerText;
                        response.Add(item);
                        return response;
                    }                //开始解析xml()
                    //通过判断返回的数据量,确认是否有数据返回
                    XmlNode retNode = xmlResult.SelectSingleNode("//RecordCount");
                    if (Convert.ToInt32(retNode.InnerText) <= 0)
                    {
                        //未找到数据
                        item.ResultCode = "00011";
                        item.ResultMsg = "无数据返回";
                        response.Add(item);
                        return response;
                    }
                    //成功
                    XmlNodeList hotelList = xmlResult.SelectNodes("//Item");
                    XmlNodeList roomList = null;
                    XmlNodeList rateList = null;
                    XmlNodeList fangtList = null;
                    XmlNodeList imgList = null;
                    foreach (XmlNode node in hotelList)
                    {
                        Echao.Entity.JinRiHotel.JinRiMsg msg = new Entity.JinRiHotel.JinRiMsg();
                        msg.ResultCode = "00000";
                        msg.ThreeCodeCity = node.SelectSingleNode("City").Attributes["Code"].Value;
                        msg.CityName = node.SelectSingleNode("City").InnerText;
                        msg.HotelCode = node.SelectSingleNode("Hotel").Attributes["Code"].Value;
                        msg.HotelName = node.SelectSingleNode("Hotel").InnerText;
                        msg.Address = node.SelectSingleNode("Address").InnerText;
                        msg.RankCode = node.SelectSingleNode("Rank").Attributes["Code"].Value;
                        msg.RankName = node.SelectSingleNode("Rank").InnerText;
                        msg.Regions = node.SelectSingleNode("Regions").SelectSingleNode("Region").InnerText;
                        msg.Businesses = node.SelectSingleNode("Businesses").SelectSingleNode("Business").InnerText;
                        msg.Report = node.SelectSingleNode("Reports").SelectSingleNode("Report").InnerText;
                        //开始获取room房型数据
                        roomList = node.SelectSingleNode("Rooms").ChildNodes;
                        foreach (XmlNode room in roomList)
                        {
                           
                            roomEntity.ResultCode = "00000";
                            roomEntity.RoomCode = room.SelectSingleNode("RoomName").Attributes["Code"].Value;
                            roomEntity.RoomName = room.SelectSingleNode("RoomName").InnerText;
                            roomEntity.BedType = room.SelectSingleNode("BedType").InnerText;
                            roomEntity.AddBed = room.SelectSingleNode("AddBed").InnerText;
                            roomEntity.Floors = room.SelectSingleNode("Floors").InnerText;
                            roomEntity.Description = room.SelectSingleNode("Description").InnerText;
                            roomEntity.Area = room.SelectSingleNode("Area").InnerText;
                            msg.Rooms.Add(roomEntity);
                            //开始获取房价数据
                            rateList = room.SelectSingleNode("Rates").ChildNodes;                        foreach (XmlNode rate in rateList)
                            {
                                Echao.Entity.JinRiHotel.RoomRate rateEntity = new Entity.JinRiHotel.RoomRate();
                                rateEntity.Date = rate.SelectSingleNode("Date").InnerText;
                                rateEntity.PaymentType = rate.SelectSingleNode("PaymentType").InnerText;
                                rateEntity.SalePrice = rate.SelectSingleNode("SalePrice").InnerText;
                                rateEntity.DisplayPrice = rate.SelectSingleNode("DisplayPrice").InnerText;
                                rateEntity.BalsPrice = rate.SelectSingleNode("BalsPrice").InnerText;
                                rateEntity.Commisions = rate.SelectSingleNode("Commissions").InnerText;
                                rateEntity.CommisionsRatio = rate.SelectSingleNode("Commissions").Attributes["Ratio"].Value;
                                rateEntity.Meal = rate.SelectSingleNode("Meal").InnerText;
                                rateEntity.BroadNet = rate.SelectSingleNode("BroadNet").InnerText;
                                //添加房价 
                                roomEntity.Rates.Add(rateEntity);
                            }                        //开始获取房态数据
                            fangtList = room.SelectSingleNode("Availabilities").ChildNodes;                        foreach (XmlNode ft in fangtList)
                            {
                                Echao.Entity.JinRiHotel.RoomAvailabilities availabilities = new Entity.JinRiHotel.RoomAvailabilities();
                                availabilities.Date = ft.SelectSingleNode("Date").InnerText;
                                availabilities.PaymentType = ft.SelectSingleNode("PaymentType").InnerText;
                                availabilities.Status = ft.SelectSingleNode("Status").InnerText;
                                availabilities.StatusCode = ft.SelectSingleNode("Status").Attributes["Code"].Value;
                                //添加房态
                                roomEntity.Availabilities.Add(availabilities);
                            }                    }
                        //开始获取图片数据
                        imgList = node.SelectSingleNode("Links").ChildNodes;
                        foreach (XmlNode img in imgList)
                        {
                            ;
                            link.Text = img.SelectSingleNode("Text").InnerText;
                            link.ThumbNail = img.SelectSingleNode("ThumbNail").InnerText;
                            link.Image = img.SelectSingleNode("Image").InnerText;
                            //添加图片
                            msg.ImgLinkes.Add(link);
                        }
                        response.Add(msg);
                    }我想说 ,给了给你,你能看懂么 ?
    c#解析xml
      

  6.   

    不好意思,我是刚接触webservice,很多东西都不知道,我这个调用网络上的一个webservice,在.cs中调用该服务,不知道哪里有问题吗?
      

  7.   

    Object也是有类型的,调试器里看一下。
      

  8.   

    我看怎么好像返回的是XmlDocument呢。
      

  9.   

    不好意思,我是刚接触webservice,很多东西都不知道,我这个调用网络上的一个webservice,在.cs中调用该服务,不知道哪里有问题吗?
    不管你访问什么WebServices,它最后一般都会返回一个结果,这个结果或许是一个object获取是一个string,总之要根据你要的操作来根据结果判断。你后台访问,直接导入名称,创建对象就可以了,然后获取其所包含的方法,看看其返回值就行了,对象-看看其中的属性呗,string打印出来看看呗。这没什么好纠结的。
      

  10.   

    这一行是什么意思??没意思httpRequest是自定义的方法,访问接口的 ,获取到接口返回的字符串
      

  11.   

    我上面的图片中可以看出来吗?在哪里看?XmlNode[3] 类型是XmlNode的3个元素的数组。
      

  12.   

    但是我将rs转为XmlNode的时候好像行不通!
      

  13.   

    XmlNode firstNode = rs[0] as XmlNode;
      

  14.   

    你那个地方返回了XML对象,里面有个三列数据吧。你循环便利出来啊。你的需求是什么。我现在只知道你调试,你具体需要一个什么样的需求。
      

  15.   


    不好意思我是新手,之前没接触过XML,我将获得的结果转为了xmlnode,但我想获取图中error节点的值,怎么获取?谢谢?
      

  16.   

    String err = two.ChildNodes[1].InnerText
    这样对不对?
      

  17.   

    好像就用 String err = two.ChildNodes[1].InnerText  能取到值,谢谢楼上各位的帮忙!