webservice返回数据处理

Oooover 2013-05-24 02:23:33
本人通过Webservice调用一个网站的API时,返回的数据类型是object[],但是我调试的时候查看里面的具体内容时,发现其实是一些XML内容,调试的时候有一项InnerXML的值如图:
请问怎样才能获取里面的值?
...全文
505 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oooover 2013-05-25
  • 打赏
  • 举报
回复
好像就用 String err = two.ChildNodes[1].InnerText 能取到值,谢谢楼上各位的帮忙!
Oooover 2013-05-24
  • 打赏
  • 举报
回复
String err = two.ChildNodes[1].InnerText 这样对不对?
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 21 楼 dai451954706 的回复:
XmlNode[3] 类型是XmlNode的3个元素的数组。


不好意思我是新手,之前没接触过XML,我将获得的结果转为了xmlnode,但我想获取图中error节点的值,怎么获取?谢谢?
隔壁黎叔叔 2013-05-24
  • 打赏
  • 举报
回复
你那个地方返回了XML对象,里面有个三列数据吧。你循环便利出来啊。你的需求是什么。我现在只知道你调试,你具体需要一个什么样的需求。
宝_爸 2013-05-24
  • 打赏
  • 举报
回复
XmlNode firstNode = rs[0] as XmlNode;
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 20 楼 findcaiyzh 的回复:
XmlNode[3] 类型是XmlNode的3个元素的数组。
但是我将rs转为XmlNode的时候好像行不通!
宝_爸 2013-05-24
  • 打赏
  • 举报
回复
引用 15 楼 dai451954706 的回复:
[quote=引用 13 楼 findcaiyzh 的回复:] Object也是有类型的,调试器里看一下。
我上面的图片中可以看出来吗?在哪里看?[/quote] XmlNode[3] 类型是XmlNode的3个元素的数组。
IssacChow 2013-05-24
  • 打赏
  • 举报
回复
引用 12 楼 dai451954706 的回复:
[quote=引用 10 楼 a271083650 的回复:] string responseXml = HttpRequest(requestXml);
这一行是什么意思??[/quote]没意思httpRequest是自定义的方法,访问接口的 ,获取到接口返回的字符串
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 17 楼 xihuanni2358 的回复:
不管你访问什么WebServices,它最后一般都会返回一个结果,这个结果或许是一个object获取是一个string,总之要根据你要的操作来根据结果判断。你后台访问,直接导入名称,创建对象就可以了,然后获取其所包含的方法,看看其返回值就行了,对象-看看其中的属性呗,string打印出来看看呗。这没什么好纠结的。
我在上面的第一个和第二个截图就是调试时的结果,麻烦你帮忙看看,若缺少东西,我再截图!
隔壁黎叔叔 2013-05-24
  • 打赏
  • 举报
回复
引用 11 楼 dai451954706 的回复:
[quote=引用 9 楼 xihuanni2358 的回复:] 你去调用的一般是WebServers的查询吧,他返回的是一个Table为父节点的XML可扩展标记语言吧,你一般是通过Ajax调用的吗?结合jQuery很好获取到值的,先到源网站上找出他的节点名称,然后这样写: $.post("webserversaddress","",function(result){ var array=$(result).find("Table") //这里有很多节点总之想办法定位到那个节点就行了。一般这一步都可以获取到一个数组。 array[...] //获取自己想要的数据。 });
不好意思,我是刚接触webservice,很多东西都不知道,我这个调用网络上的一个webservice,在.cs中调用该服务,不知道哪里有问题吗?[/quote] 不管你访问什么WebServices,它最后一般都会返回一个结果,这个结果或许是一个object获取是一个string,总之要根据你要的操作来根据结果判断。你后台访问,直接导入名称,创建对象就可以了,然后获取其所包含的方法,看看其返回值就行了,对象-看看其中的属性呗,string打印出来看看呗。这没什么好纠结的。
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 14 楼 findcaiyzh 的回复:
我看怎么好像返回的是XmlDocument呢。
那该怎么处理啊?谢谢!
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 13 楼 findcaiyzh 的回复:
Object也是有类型的,调试器里看一下。
我上面的图片中可以看出来吗?在哪里看?
宝_爸 2013-05-24
  • 打赏
  • 举报
回复
我看怎么好像返回的是XmlDocument呢。
宝_爸 2013-05-24
  • 打赏
  • 举报
回复
Object也是有类型的,调试器里看一下。
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 10 楼 a271083650 的回复:
string responseXml = HttpRequest(requestXml);
这一行是什么意思??
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 9 楼 xihuanni2358 的回复:
你去调用的一般是WebServers的查询吧,他返回的是一个Table为父节点的XML可扩展标记语言吧,你一般是通过Ajax调用的吗?结合jQuery很好获取到值的,先到源网站上找出他的节点名称,然后这样写: $.post("webserversaddress","",function(result){ var array=$(result).find("Table") //这里有很多节点总之想办法定位到那个节点就行了。一般这一步都可以获取到一个数组。 array[...] //获取自己想要的数据。 });
不好意思,我是刚接触webservice,很多东西都不知道,我这个调用网络上的一个webservice,在.cs中调用该服务,不知道哪里有问题吗?
IssacChow 2013-05-24
  • 打赏
  • 举报
回复

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

});
Oooover 2013-05-24
  • 打赏
  • 举报
回复
引用 7 楼 c120197588 的回复:
那就当xml处理了呗。
怎么处理啊?能说详细点吗?
Glenn-Cui 2013-05-24
  • 打赏
  • 举报
回复
那就当xml处理了呗。
加载更多回复(6)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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