分享
 
 
 

解析XML方法两则

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

(一)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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有