webservice返回值

berlin8600 2009-06-26 11:27:08
请问webservice的返回值用哪种最好,为什么?
XmlDocument,XmlDataDocument,XmlElement,String,XmlNode

据说.net 只支持string,xmlnode类型,
实际上测试过即使返回值设置为XmlDocument,
接收的时候也是XmlNode,
这种情况上好像<?xml version=\"1.0\" encoding=\"UTF-8\"?>
就接收不到了.

我的问题是在webservice端生成了xmldocument,用xpath都能取出节点值
比如:
doc.SelectSingleNode("/OTA_HotelAvailNotifRS/Success/@aa")

但传回到调用webservice处,却取不出来.
比如:
PMS.localhost.Synxis synxis = new PMS.localhost.Synxis();
XmlNode mynode = synxis.OTA_HotelAvailNotifRQ(doc);

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+mynode.OuterXml);
xmlDoc.SelectSingleNode("/OTA_HotelAvailNotifRS/Success/@aa")


shift+f9对比了一下,xmldocument完全一样的,
(传string的话,好像不是很专业的说)
不知道各位牛牛都用的什么解决办法和好的建议?谢谢!
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大飞飞虫 2009-06-26
  • 打赏
  • 举报
回复
最好建议是用string, 当然对象也可以,但是异常率高.特别是频繁通讯时.

写webmethod时,你直接写
public string aaa()
{
...
return r;
}
即可,



然后在你调用的代码里写(WS你可以用wsdl工具生成代理类)
string p=(new ws()).aaa();
就能得到 前面r的值了,你不用自己去分析看到的XML的,这个MS帮你做了.
lchy110 2009-06-26
  • 打赏
  • 举报
回复
我现在做的就是返回对象的
berlin8600 2009-06-26
  • 打赏
  • 举报
回复
星星给解释一下二楼的问题呗 :)
thinkingforever 2009-06-26
  • 打赏
  • 举报
回复
XmlNode
jasondct 2009-06-26
  • 打赏
  • 举报
回复
XmlDataDocument 类为 XML 数据提供一个内存缓存。
XmlDataDocument 扩展了 XmlDocument 类。能用 XmlDocument 的地方,也必定能用 XmlDataDocument。
XmlDataDocument 与 DataSet 类之间有紧密的联系。事实上,你可以把 XmlDataDocument 看作是一个有 DataSet 库的 XmlDocument。
jasondct 2009-06-26
  • 打赏
  • 举报
回复
这个主要看你需要, 返回值 不包含 框架 复杂参数 文本等 用string 好
否则 XmlDataDocument 它可以包含很多内容
berlin8600 2009-06-26
  • 打赏
  • 举报
回复
string str1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<OTA_HotelAvailNotifRS TimeStamp=\"2005-11-27T00:39:07.171\" Target=\"Test\" Version=\"4\">" +
" <Success aa=\"LoveMiuMiu\"/>" +
"</OTA_HotelAvailNotifRS>";

string str2 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<OTA_HotelAvailNotifRS TimeStamp=\"2005-11-27T00:39:07.171\" Target=\"Test\" Version=\"4\" xmlns=\"http://www.opentravel.org/OTA/2003/05\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
" <Success aa=\"LoveMiuMiu\"/>" +
"</OTA_HotelAvailNotifRS>";

XmlDocument.LoadXML(str1)正常,
XmlDocument.LoadXML(str2)在之后用xpath找节点会找不到,为什么?
如:xmlDoc.SelectSingleNode("/OTA_HotelAvailNotifRS/Success")

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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