(一)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数据,将其转换为易语言可以处理的数据结构,如字节流、字符串或对象。常见的解析方式有DOM(Document Object Model)和SAX(Simple API for XML)两种。DOM解析器会将整个XML文档加载...
总结,选择DOM还是SAX解析XML取决于具体需求,包括文件大小、处理速度、内存限制以及是否需要随机访问数据。在实际开发中,根据项目特点灵活选择合适的解析方式,能有效提高程序性能和资源利用效率。
有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...
本教程将详细介绍四种常见的XML解析方法,以帮助你更好地理解和处理XML数据。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点操作来访问和修改...
与上一个版本一起使用可以可以起到提高效率的目的。本人解析xml的真实文档
C++中解析XML文件的方法多种多样,这里我们将重点介绍使用TinyXML库的方法,因为这是你提供的压缩包文件名。 TinyXML是一个开源、小巧且易于使用的C++库,专门用于XML文件的读取和写入。下面我们将详细介绍如何使用...
4. **解析XML**:一旦XML文档加载成功,可以使用解析器的方法如`GetFirstChild`, `GetNextSibling`, `GetName`, `GetValue`等来遍历和提取XML节点信息。 5. **处理XML数据**:根据业务需求,将解析出的数据存储到...
在给定的文件中,我们可以看到使用 JavaScript 解析 XML 文件的两种方法:使用 DOMParser 对象和使用 ActiveXObject 对象。 使用 DOMParser 对象 DOMParser 对象是 Mozilla 浏览器中的一种对象,用于将 XML 字符串...
在`RealPlay`中,使用`loadXML`方法解析XML字符串,而不是`load`方法,因为`loadXML`用于解析内存中的XML字符串。 总结来说,C++通过MSXML库提供了解析XML文档和XML字符串的功能。这使得在C++和不支持指针的语言...
解析XML主要有两种方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历和操作XML数据。例如,`...
在本文中,我们将深入探讨如何在STM32F107上使用minixml库解析XML(可扩展标记语言)文档,这对于那些初次尝试在嵌入式环境中处理XML数据的开发者来说,是非常有价值的。 XML是一种通用的数据交换格式,它允许结构...
总结来说,Java提供了多种解析XML的方法,包括DOM、SAX和JAXB等。对于处理多级嵌套的XML,DOM和JAXB在操作上更为便捷,而SAX则适用于处理大规模文件。在具体选择时,应根据项目需求和资源限制进行权衡。
本文将深入探讨“在线解析XML”与“本地解析XML”的概念及其应用场景,以及如何将XML数据从CLOB字段提取并存入数据库。 1. XML的基本概念: XML是一种自描述的、结构化的文本格式,它通过标签来定义数据结构和内容...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
- 使用`DocumentBuilder`的`parse()`方法解析XML文件,生成`Document`对象,这是JDOM的根节点。 2. **访问XML元素和属性**: - `Element`类代表XML元素,可以通过`Document.getRootElement()`获取根元素。 - `...
在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。 1. DOM解析: DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历...
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
3. **解析XML**:调用`parse`方法,传入XML文件的输入流或URL,开始解析过程。 **SAX解析XML的关键事件处理:** 1. **startDocument()**:开始解析文档时触发。 2. **startElement()**:遇到开始标签时触发,提供...
在“PB解析xml格式串”的主题中,我们主要关注如何将XML格式的数据转换为Protocol Buffers的二进制格式,以便于高效地存储和传输。以下是一些相关的知识点: 1. **Protocol Buffers介绍**:PB是一种高效的序列化...