我有一段vb2005下开发的pda 远程读取 xml的数据到数组的代码,但我对xml的了解仅限于能写出下面这个文档而已。麻烦大家帮忙指点一下错误。先谢谢了。
<?xml version="1.0" encoding="UTF-8"?>
<letter>
<a>
<name>一月份</name>
<string>48.68</string>
</a>
<b>
<name>二月份</name>
<string>98.62</string>
</b>
<c>
<name>三月份</name>
<string>59.88</string>
</c>
<d>
<name>四月份</name>
<string>68.98</string>
</d>
<e>
<name>五月份</name>
<string>78.55</string>
</e>
<f>
<name>六月份</name>
<string>68.76</string>
</f>
<g>
<name>七月份</name>
<string>75.61</string>
</g>
</letter>
以下是pda的代码
Dim WebURL As String
WebURL = "http://localhost:8080/xml.xml"
Dim SendStr As String, XMLrandom As String, XMLObject As Object
Dim ReadFileText As String XMLObject = CreateObject("Microsoft.XMLHTTP") Randomize()
XMLrandom = Rnd() * Int((300 - 11 + 1) * Rnd() + 11)
XMLObject.open("GET", WebURL + "?&num=" + XMLrandom, False)
XMLObject.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded")
XMLObject.setRequestHeader("content-length", Len(SendStr))
XMLObject.send() ReadFileText = StrConv(XMLObject.ResponseBody, "GB2312") Label1.Text = ReadFileText XMLMorntekDocument = CreateObject("Microsoft.XMLDOM")
'XMLMorntekDocument.Async = False '
'XMLMorntekDocument.ValidateOnParse = False '是否对文档进行验证 XMLMorntekDocument.Load(XMLObject.ResponseXML)
Dim oRoot As string oRoot = XMLMorntekDocument.documentElement For i = 0 To oroot.childNodes.length
ReDim Preserve daty(i)
ReDim Preserve data(i)
daty(i) = oRoot.childNodes(i).childNodes(0).text data(i) = oRoot.childNodes(i).childNodes(1).text
Next
XMLMorntekDocument = Nothing
XMLObject = Nothing
End Sub
编辑的时候,编辑器就显示root的数据类型有问题,但是我真不知道应该是什么,而且由于数据类型没有对,所以也就没有调试过,应该有很多问题吧,谢谢,谢谢。
<?xml version="1.0" encoding="UTF-8"?>
<letter>
<a>
<name>一月份</name>
<string>48.68</string>
</a>
<b>
<name>二月份</name>
<string>98.62</string>
</b>
<c>
<name>三月份</name>
<string>59.88</string>
</c>
<d>
<name>四月份</name>
<string>68.98</string>
</d>
<e>
<name>五月份</name>
<string>78.55</string>
</e>
<f>
<name>六月份</name>
<string>68.76</string>
</f>
<g>
<name>七月份</name>
<string>75.61</string>
</g>
</letter>
以下是pda的代码
Dim WebURL As String
WebURL = "http://localhost:8080/xml.xml"
Dim SendStr As String, XMLrandom As String, XMLObject As Object
Dim ReadFileText As String XMLObject = CreateObject("Microsoft.XMLHTTP") Randomize()
XMLrandom = Rnd() * Int((300 - 11 + 1) * Rnd() + 11)
XMLObject.open("GET", WebURL + "?&num=" + XMLrandom, False)
XMLObject.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded")
XMLObject.setRequestHeader("content-length", Len(SendStr))
XMLObject.send() ReadFileText = StrConv(XMLObject.ResponseBody, "GB2312") Label1.Text = ReadFileText XMLMorntekDocument = CreateObject("Microsoft.XMLDOM")
'XMLMorntekDocument.Async = False '
'XMLMorntekDocument.ValidateOnParse = False '是否对文档进行验证 XMLMorntekDocument.Load(XMLObject.ResponseXML)
Dim oRoot As string oRoot = XMLMorntekDocument.documentElement For i = 0 To oroot.childNodes.length
ReDim Preserve daty(i)
ReDim Preserve data(i)
daty(i) = oRoot.childNodes(i).childNodes(0).text data(i) = oRoot.childNodes(i).childNodes(1).text
Next
XMLMorntekDocument = Nothing
XMLObject = Nothing
End Sub
编辑的时候,编辑器就显示root的数据类型有问题,但是我真不知道应该是什么,而且由于数据类型没有对,所以也就没有调试过,应该有很多问题吧,谢谢,谢谢。
Private Sub Form_Load()
Dim WebURL As String
WebURL = "http://localhost/xml.xml"
Dim SendStr As String, XMLrandom As String, XMLObject As XMLHTTP
Dim ReadFileText As String
Set XMLObject = CreateObject("Microsoft.XMLHTTP")
Randomize
XMLrandom = Rnd() * Int((300 - 11 + 1) * Rnd() + 11)
XMLObject.Open "GET", WebURL + "?&num=" + XMLrandom, False
XMLObject.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
XMLObject.setRequestHeader "content-length", Len(SendStr)
XMLObject.Send
Dim b() As Byte
b = XMLObject.responseBody
ReadFileText = Utf8ToUnicode(b) Text1.Text = ReadFileText
Dim XMLMorntekDocument As DOMDocument
Set XMLMorntekDocument = CreateObject("Microsoft.XMLDOM")
XMLMorntekDocument.async = False '
XMLMorntekDocument.validateOnParse = True '是否对文档进行验证
XMLMorntekDocument.loadXML Text1.Text
Dim oRoot As IXMLDOMElement Set oRoot = XMLMorntekDocument.documentElement
Dim i As Long, daty(), Data()
For i = 0 To oRoot.childNodes.Length - 1
ReDim Preserve daty(i)
ReDim Preserve Data(i)
daty(i) = oRoot.childNodes(i).childNodes(0).Text
Debug.Print daty(i)
Data(i) = oRoot.childNodes(i).childNodes(1).Text
Debug.Print Data(i)
Next
Set XMLMorntekDocument = Nothing
Set XMLObject = Nothing
End Sub'mod.basOption ExplicitPrivate Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 = 65001
Function Utf8ToUnicode(ByRef Utf() As Byte) As String
Dim lRet As Long
Dim lLength As Long
Dim lBufferSize As Long
lLength = UBound(Utf) - LBound(Utf) + 1
If lLength <= 0 Then Exit Function
lBufferSize = lLength * 2
Utf8ToUnicode = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(0)), lLength, StrPtr(Utf8ToUnicode), lBufferSize)
If lRet <> 0 Then
Utf8ToUnicode = Left(Utf8ToUnicode, lRet)
End If
End FunctionFunction UnicodeToUtf8(ByVal UCS As String) As Byte()
Dim lLength As Long
Dim lBufferSize As Long
Dim lResult As Long
Dim abUTF8() As Byte
lLength = Len(UCS)
If lLength = 0 Then Exit Function
lBufferSize = lLength * 3 + 1
ReDim abUTF8(lBufferSize - 1)
lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(UCS), lLength, abUTF8(0), lBufferSize, vbNullString, 0)
If lResult <> 0 Then
lResult = lResult - 1
ReDim Preserve abUTF8(lResult)
UnicodeToUtf8 = abUTF8
End If
End Function