VB处理XML(忽略节点大小写)
发布时间:2020-12-17 07:54:53 所属栏目:百科 来源:网络整理
导读:'引入Microsoft XML v4.0''有如下示例:''一般处理:'把得到的字符串全部转为大写,处理这样可以得到。但是里面的值也变成大写了。Command1_Click'可以得到Code的集合,但这种方法会把节点里面的值也处理为大写,如果对里面的内容业务上大小写敏感的话就不适用
'引入Microsoft XML v4.0 ' '有如下示例: ' '一般处理: '把得到的字符串全部转为大写,处理这样可以得到。但是里面的值也变成大写了。Command1_Click '可以得到Code的集合,但这种方法会把节点里面的值也处理为大写,如果对里面的内容业务上大小写敏感的话就不适用了。 '用Command2_Click可以解决这个问题 Private Sub Command1_Click() Dim objDomDocument As DOMDocument Set objDomDocument = New DOMDocument '因传回来不知道所有字母的大小写所以如下处理 objDomDocument.LoadXml UCase(getString) Dim xmlNodeList As IXMLDOMNodeList Set xmlNodeList = objDomDocument.selectNodes(UCase("Summary/CodeList/Code")) Debug.Print xmlNodeList.length End Sub Private Function getString() As String getString = "<Summary>" & "<Codelist>" & "<Code></Code>" & "<Code></Code>" & "<Code></Code>" & "</Codelist>" & "</Summary>" End Function Private Sub Command2_Click() '下面的方法可以解决 Dim objDomDocument As DOMDocument Set objDomDocument = New DOMDocument objDomDocument.LoadXml getString objDomDocument.SetProperty "SelectionLanguage","XPath" Dim xmlNodeList As IXMLDOMNodeList '用下面的语句在不知道节点大小写的情况下得到想要的节点 '处理一下上面的这句代码,转为 Set xmlNodeList = objDomDocument.selectNodes(TransToXML4("Summary","CodeList","Code")) Debug.Print xmlNodeList.length End Sub Public Function TransToXML4(strNodeLevel1 As String,_ Optional strNodeLevel2 As String,_ Optional strNodeLevel3 As String,_ Optional strNodeLevel4 As String) As String Dim strTemp As String strTemp = "*[translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = '" & LCase$(strNodeLevel1) & "']" If Len(strNodeLevel2) > 0 Then strTemp = strTemp & "/*[translate(name(),'abcdefghijklmnopqrstuvwxyz') = '" & LCase$(strNodeLevel2) & "']" End If If Len(strNodeLevel3) > 0 Then strTemp = strTemp & "/*[translate(name(),'abcdefghijklmnopqrstuvwxyz') = '" & LCase$(strNodeLevel3) & "']" End If If Len(strNodeLevel4) > 0 Then strTemp = strTemp & "/*[translate(name(),'abcdefghijklmnopqrstuvwxyz') = '" & LCase$(strNodeLevel4) & "']" End If TransToXML4 = strTemp ' strRecordDate = objDomDocument.selectSingleNode("*[translate(name(),'abcdefghijklmnopqrstuvwxyz') = 'salesman']/*[translate(name(),'abcdefghijklmnopqrstuvwxyz') = 'recorddate']").Text End Function (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |