(一)TransferXML函数
Public Function TransferXMl(ByVal rawdata As String) As Hashtable
Dim xmlDoc As New XmlDocument
Dim clientPrescriptionNodes As XmlNodeList
Dim clientPrescriptionNode As XmlNode
Dim bodymark As Boolean = False
Dim TempHashtable As New Hashtable
Dim valuestr As String
Dim v() As String
xmlDoc.LoadXml(rawdata)
clientPrescriptionNodes = xmlDoc.GetElementsByTagName("webmethod")
//webmethod指从哪个标记开始读取childnode到哈希表中
For Each clientPrescriptionNode In clientPrescriptionNodes
Dim baseDataNodes As XmlNodeList
Dim baseDataNode As XmlNode
Dim bFirstInRow As Boolean
baseDataNodes = clientPrescriptionNode.ChildNodes
bFirstInRow = True
For Each baseDataNode In baseDataNodes
If (bFirstInRow) Then
bFirstInRow = False
Else
Console.Out.Write(",")
End If
If baseDataNode.Name = "body" Then//此处body指内层再次嵌套的标记
bodymark = True
Console.Out.Write(baseDataNode.Name & ":" & "参数")
TempHashtable.Add("body", "1")
Else
Console.Out.Write(baseDataNode.Name & ":" & baseDataNode.OuterXml.ToString)
valuestr = baseDataNode.OuterXml.ToString
valuestr = Replace(valuestr, Chr(34), "$")
v = valuestr.Split("$")
valuestr = v(1)
TempHashtable.Add(baseDataNode.Name, valuestr)
End If
Next
Console.Out.WriteLine()
Next
If bodymark = True Then
clientPrescriptionNodes = xmlDoc.GetElementsByTagName("body")
For Each clientPrescriptionNode In clientPrescriptionNodes
Dim baseDataNodes1 As XmlNodeList
Dim baseDataNode1 As XmlNode
Dim bFirstInRow1 As Boolean
baseDataNodes1 = clientPrescriptionNode.ChildNodes
bFirstInRow1 = True
For Each baseDataNode1 In baseDataNodes1
If (bFirstInRow1) Then
bFirstInRow1 = False
Else
Console.Out.Write(",")
End If
Console.Out.Write(baseDataNode1.Name & ":" & baseDataNode1.InnerText)
TempHashtable.Add(baseDataNode1.Name, baseDataNode1.InnerText)
Next
Console.Out.WriteLine()
Next
End If
TransferXMl = TempHashtable
Exit Function
End Function
(二)GetReqResult函数
Public Function GetReqResult(ByVal scontent As String) As Hashtable
Dim snode As String '节点名称
Dim svalue As String '单个节点值
Dim mvalue As String = "" '多个节点值
Dim reqResult As New Hashtable 'Http请求内容列表
Dim strReader As StringReader = New StringReader(scontent)
Dim reader As XmlTextReader = New XmlTextReader(strReader)
While (reader.Read())
snode = reader.Name
Select Case snode
Case "action_id"//每个case表示一个标记符
reader.Read()
svalue = reader.Value
reqResult.Add(snode, svalue)
reader.Read()
Case "service_id"
reader.Read()
svalue = reader.Value
reqResult.Add(snode, svalue)
reader.Read()
Case "mid"
reader.Read()
svalue = reader.Value
reqResult.Add(snode, svalue)
reader.Read()
Case "mobile_id"
reader.Read()
svalue = reader.Value
reqResult.Add(snode, svalue)
reader.Read()
Case "access_mode" //当access_mode有连续两个时,用这种方法进行对接
reader.Read()
If mvalue = "" Then
mvalue = reader.Value
Else
mvalue = mvalue + "|" + reader.Value
End If
reader.Read()
End Select
End While
If mvalue <> "" Then
reqResult.Add("access_mode", mvalue)
End If
GetReqResult = reqResult
End Function
-----------------------
(三)两个函数被调用时的方法
Dim coll As NameValueCollection
Dim sParam As String
Dim reqbyte As Byte() 'Http请求字节流
Dim Result As Hashtable 'Http请求内容列表
coll = Request.Headers
Dim ResStr As String = ""
Dim Resbyte As Byte()
Dim c(19) As String
reqbyte = Request.BinaryRead(Request.ContentLength)
sParam = System.Text.Encoding.ASCII.GetString(reqbyte)
If sParam <> "" Then
GetReqResult(sParam)
If TransferXMl(sParam, Result) Then
c(0) = lastvalue
c(1) = Result.Item("Version")
c(2) = Result.Item("MsgType")
........
c(19) = Result.Item("FeatureStr")
ResStr = ResStr + "<?xml version=" + Chr(34) + "1.0" + Chr(34) + " ?>"
ResStr = ResStr + "<......></......>"
Resbyte = System.Text.Encoding.ASCII.GetBytes(ResStr)
Response.BinaryWrite(Resbyte)
-------------------------------------
(四)将XML存入SQL SERVER数据库
Private Sub saveOrderData(ByVal c() As String)
Dim myConnection As New SqlConnection
Dim mySelectQuery As String
Dim myCommand As SqlCommand
Dim brandstr As String
Try
myConnection = New SqlConnection("user id=sa ; password=; initial catalog=GOGO ; data source = 127.0.0.1")
myConnection.Open()
mySelectQuery = "insert into SyncOrderRelationReq(TransactionID,Version,MsgType,DeviceType,DeviceID,DeviceType1,DeviceID1,UserIDType,MSISDN,PseudoCode,UserIDType1,MSISDN1,PseudoCode1,LinkID,ActionID,ActionReasonID,SPID,SPServiceID,AccessMode,FeatureStr) values(" & c(0) & ",'" & c(1) & "','" & c(2) & "','" & c(3) & "','" & c(4) & "','" & c(5) & "','" & c(6) & "','" & c(7) & "','" & c(8) & "',CONVERT(binary,'" & c(9) & "'),'" & c(10) & "','" & c(11) & "',CONVERT(binary,'" & c(12) & "'),'" & c(13) & "','" & c(14) & "','" & c(15) & "','" & c(16) & "','" & c(17) & "','" & c(18) & "',CONVERT(binary,'" & c(19) & "')) "
myCommand = New SqlCommand(mySelectQuery, myConnection)
myCommand.ExecuteNonQuery()
Catch
End Try
End Sub
分享到:
相关推荐
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml
解析XML特殊字符方法有二种 XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符
XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
sap解析xml报文并将报文内容提取到内表中,附件带有详细的源代码和操作步骤。有注释!
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
本程序提供了解析xml的四种方法,希望能帮助到需要的朋友。
C++实现对xml文件的解析,C++实现对xml文件的解析,C++实现对xml文件的解析。
解析xml
xml解析xml解析xml解析例子xml解析xml解析xml解析xml解析xml解析xml解析xml解析
易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码
与上一个版本一起使用可以可以起到提高效率的目的。本人解析xml的真实文档
PHP解析XML文档,PHP解析XML文档,PHP解析XML文档
STM32f107应用minixml库解析xml,成功解析,软件仿真通过。适合初次接触STM32解析xml的童鞋们。
JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法
纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...
PB 解析XML (代码案例)
java解析XML文件java解析XML文件java解析XML文件java解析XML文件java解析XML文件java解析XML文件
xml 解析几何 xml 解析几何 xml 解析几何