您的位置:首页 > 编程语言 > VB

写给痛苦于新旧语言交互中的新人们,vb6调用vs2005的webservice数据(方法一)

2008-04-24 20:47 537 查看
一.VB6 客户端的程序,读取每个节点的信息
------------------------------------------------
Private Sub Cmd_RW_XMLstream_Click()
'///
'以下是我搜索中看到的言语
'///
'实际上SOAP可以实现基本类型的网络传输,但是SOAP提供XML格式内容的传输,所以要先进行对象的序列化,成XML;再通过SOAP传输,到界面层再由XML反序列化为对象,或者就直接显示在控件里

' 1.通过VB(或者其它开发平台也可能存在这个情况的)访问web services方法返回的数据集的速度慢,怎么优化提高呢?
' 2.在VB6.0端把得到的xml数据,转换成其本地可以操作的数据集的方法。这里,要提示一下,在vb6.0中把由web services方法返回的xml数据形成文件的格式与由vb6.0直接用ADO访问数据库后得到数据集形成的xml文件的格式是不同的!!!


Dim AdoRsTool As New ADODB.Recordset




Dim wOk As Boolean






Dim wXML As DOMDocument40


Set wXML = New DOMDocument40


Dim wNode As IXMLDOMNode


Dim wNodeList As IXMLDOMNodeList


'加载XML到 xml文档对象


wXML.async = False


Dim str As String




Dim soapAddWords As New SoapClient30


Call soapAddWords.MSSoapInit("http://localhost:4006/WebSite_WebServiceSample/Service.asmx?wsdl")




' str = soapAddWords.HelloWorld1()


' MsgBox str




If Err.Number <> 0 Then


MsgBox soapAddWords.FaultString, vbExclamation


End If




Dim strAll As String




strAll = ""


strAll = soapAddWords.strGetAllNewWords()


MsgBox strAll




wOk = wXML.LoadXml(strAll)




' Dim strtest As String


'


' strtest = ""




If wOk Then




Set wNodeList = wXML.documentElement.selectNodes("//wordslist")




' MsgBox wNodeList.length




' Set wNodeList = wNode.selectNodes("Words")


For Each wNode In wNodeList




MsgBox wNode.Text




Next wNode




' strtest = wXML.documentElement.selectSingleNode("wordslist").Text


' MsgBox strtest




Else




MsgBox "读完了"




End If






MsgBox "看看是否写了"




End Sub

二.C#的webservice的方法 传输是字符串,但是是XML格式的字符串。


[WebMethod]




public string HelloWorld1() ...{


return "Hello World";


}




[WebMethod(Description = "以string传输")]


public string strGetAllNewWords()




...{


string StrConn = System.Configuration.ConfigurationManager.AppSettings["SQLConnectionString"].ToString();


SqlDataAdapter adapter = new SqlDataAdapter("select * from wordslist order by word FOR XML AUTO,root('Words'),elements", StrConn);








SqlCommandBuilder sqlcommd = new SqlCommandBuilder(adapter);


DataSet DsWords = new DataSet();


sqlcommd.DataAdapter.Fill(DsWords, "wordslist");




MemoryStream memStrm = new MemoryStream();


StreamReader strmRead = new StreamReader(memStrm);


StreamWriter strmWrite = new StreamWriter(memStrm);




XmlDataDocument xDataDoc = new XmlDataDocument();


DsWords.WriteXml(strmWrite , XmlWriteMode.IgnoreSchema);


memStrm.Seek(0, SeekOrigin.Begin);


xDataDoc.Load(strmRead);




string strAll = "";




XmlNode xmlNodeR = xDataDoc.SelectSingleNode("NewDataSet");


strAll = xmlNodeR.InnerText.ToString();


return strAll;




}

-------------------------------------------------------------------------------------------
'//xml文件
------------------------------------------------------------------------------


<Words>


<aspnetdb.dbo.WordsList>


<id>24</id>


<Word>怎么可能</Word>


<WordExplain>怎么可能


new


help


select


delect</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>2</id>


<userid>13</userid>


<Word>english</Word>


<WordExplain>englishpeople</WordExplain>


<LearnType>2</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>25</id>


<Word>英语 </Word>


<WordExplain>英语 </WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>4</id>


<userid>aa</userid>


<Word>basfsd</Word>


<WordExplain>bb所发生</WordExplain>


<LearnType>2</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>5</id>


<userid>aa</userid>


<Word>casfsd</Word>


<WordExplain>cc</WordExplain>


<LearnType>2</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>7</id>


<userid>aa</userid>


<Word>easfsd</Word>


<WordExplain>ee</WordExplain>


<LearnType>2</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>8</id>


<userid>aa</userid>


<Word>fasfsd</Word>


<WordExplain>ff</WordExplain>


<LearnType>2</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>10</id>


<userid>aa1</userid>


<Word>hasfsd1</Word>


<WordExplain>hh</WordExplain>


<LearnType>1</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>11</id>


<userid>aa1</userid>


<Word>iasfsd1</Word>


<WordExplain>ii</WordExplain>


<LearnType>1</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>12</id>


<userid>aa1</userid>


<Word>jasfsd1</Word>


<WordExplain>jjj</WordExplain>


<LearnType>1</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>13</id>


<userid>aa1</userid>


<Word>kasfsd1</Word>


<WordExplain>kkk</WordExplain>


<LearnType>1</LearnType>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>31</id>


<Word>looklook</Word>


<WordExplain>look</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>23</id>


<Word>看看</Word>


<WordExplain>看看</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>32</id>


<Word>look</Word>


<WordExplain>lookmehahahaaaa</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>18</id>


<Word> 强</Word>


<WordExplain> 强</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>19</id>


<Word>new</Word>


<WordExplain>new


help


select


delect</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>27</id>


<Word>add</Word>


<WordExplain>addsamelefadfsdfsd更新</WordExplain>


</aspnetdb.dbo.WordsList>


<aspnetdb.dbo.WordsList>


<id>26</id>


<Word>应该看看</Word>


<WordExplain>应该看看呵呵</WordExplain>


</aspnetdb.dbo.WordsList>


</Words>

鄙人真是苦恼了两天才想出这种下策。

如果有人有更好的办法好希望你不於余力的帮助我这菜鸟一下。

真诚希望你的指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: