`
javatoyou
  • 浏览: 1072643 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

解析XML方法两则

阅读更多

(一)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在线解析xml

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...

    易语言 xml解析 易语言 xml解析 教程 带源码

    这些解析器可以帮助我们解析XML数据,将其转换为易语言可以处理的数据结构,如字节流、字符串或对象。常见的解析方式有DOM(Document Object Model)和SAX(Simple API for XML)两种。DOM解析器会将整个XML文档加载...

    xml解析文件的两种方式

    总结,选择DOM还是SAX解析XML取决于具体需求,包括文件大小、处理速度、内存限制以及是否需要随机访问数据。在实际开发中,根据项目特点灵活选择合适的解析方式,能有效提高程序性能和资源利用效率。

    解析XML特殊字符方法

    有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...

    4种解析XML方法实例

    本教程将详细介绍四种常见的XML解析方法,以帮助你更好地理解和处理XML数据。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点操作来访问和修改...

    kettle 解析xml xml文档,配合kettle 解析xml stax方法,完整解析案例使用

    与上一个版本一起使用可以可以起到提高效率的目的。本人解析xml的真实文档

    C++解析xml文件

    C++中解析XML文件的方法多种多样,这里我们将重点介绍使用TinyXML库的方法,因为这是你提供的压缩包文件名。 TinyXML是一个开源、小巧且易于使用的C++库,专门用于XML文件的读取和写入。下面我们将详细介绍如何使用...

    PB 解析XML (代码案例)

    4. **解析XML**:一旦XML文档加载成功,可以使用解析器的方法如`GetFirstChild`, `GetNextSibling`, `GetName`, `GetValue`等来遍历和提取XML节点信息。 5. **处理XML数据**:根据业务需求,将解析出的数据存储到...

    js解析XML文件

    在给定的文件中,我们可以看到使用 JavaScript 解析 XML 文件的两种方法:使用 DOMParser 对象和使用 ActiveXObject 对象。 使用 DOMParser 对象 DOMParser 对象是 Mozilla 浏览器中的一种对象,用于将 XML 字符串...

    C++解析xml文档或者xml字符串方法

    在`RealPlay`中,使用`loadXML`方法解析XML字符串,而不是`load`方法,因为`loadXML`用于解析内存中的XML字符串。 总结来说,C++通过MSXML库提供了解析XML文档和XML字符串的功能。这使得在C++和不支持指针的语言...

    xml 解析 xml 解析几何

    解析XML主要有两种方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历和操作XML数据。例如,`...

    STM32解析XML

    在本文中,我们将深入探讨如何在STM32F107上使用minixml库解析XML(可扩展标记语言)文档,这对于那些初次尝试在嵌入式环境中处理XML数据的开发者来说,是非常有价值的。 XML是一种通用的数据交换格式,它允许结构...

    java 解析xml 多级

    总结来说,Java提供了多种解析XML的方法,包括DOM、SAX和JAXB等。对于处理多级嵌套的XML,DOM和JAXB在操作上更为便捷,而SAX则适用于处理大规模文件。在具体选择时,应根据项目需求和资源限制进行权衡。

    解析xml和本地解析xml

    本文将深入探讨“在线解析XML”与“本地解析XML”的概念及其应用场景,以及如何将XML数据从CLOB字段提取并存入数据库。 1. XML的基本概念: XML是一种自描述的、结构化的文本格式,它通过标签来定义数据结构和内容...

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    解析xml的jar包

    - 使用`DocumentBuilder`的`parse()`方法解析XML文件,生成`Document`对象,这是JDOM的根节点。 2. **访问XML元素和属性**: - `Element`类代表XML元素,可以通过`Document.getRootElement()`获取根元素。 - `...

    android下解析xml文件的demo

    在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。 1. DOM解析: DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历...

    SAX解析XML文件实例

    SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...

    Sax解析XML文件解析

    3. **解析XML**:调用`parse`方法,传入XML文件的输入流或URL,开始解析过程。 **SAX解析XML的关键事件处理:** 1. **startDocument()**:开始解析文档时触发。 2. **startElement()**:遇到开始标签时触发,提供...

    PB 解析xml格式串

    在“PB解析xml格式串”的主题中,我们主要关注如何将XML格式的数据转换为Protocol Buffers的二进制格式,以便于高效地存储和传输。以下是一些相关的知识点: 1. **Protocol Buffers介绍**:PB是一种高效的序列化...

Global site tag (gtag.js) - Google Analytics