我有一种情况需要将XML转储到VBScript中的ADODB Recordset中。我的XML在下面的表格中。我想在我的代码中做的是将XML转换为带有AddressObject行的记录集。我试过下面的代码,但一个接一个地继续运行一个DomDocument错误。有人可以帮我解决这个问题吗?我在Notepad ++中尝试了下面的代码,但仍然无法获得正确的结果。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<AuthorizationToken xmlns="http://www.avectra.com/2005/">
<Token>8d92d5ba-8b06-4464-9829-86eacac68e6c</Token>
</AuthorizationToken>
</soap:Header>
<soap:Body>
<GetQueryResponse xmlns="http://www.avectra.com/2005/">
<GetQueryResult>
<AddressObjects xsi:schemaLocation="http://www.avectra.com/2005/ Address.xsd" recordReturn="1">
<AddressObject>
<adr_key>2bbcd09f-89c7-4558-93bb-ce23e832ab94</adr_key>
<adr_line1>1447 Limerick Lane</adr_line1>
<adr_line2 xsi:nil="true" />
<adr_line3 xsi:nil="true" />
<adr_city>Canyon Lake</adr_city>
<adr_state>TX</adr_state>
<adr_post_code>78133</adr_post_code>
<adr_city_state_code>Canyon Lake, TX 78133</adr_city_state_code>
<adr_country>UNITED STATES</adr_country>
<adr_intl_province xsi:nil="true" />
<adr_county>Comal</adr_county>
<adr_bad_address_flag>0</adr_bad_address_flag>
<adr_no_validation_flag>0</adr_no_validation_flag>
<cst_id>001049008I</cst_id>
</AddressObject>
</AddressObjects>
</GetQueryResult>
</GetQueryResponse>
</soap:Body>
</soap:Envelope>
Public Function XMLToRecSet(Byref objXMLDoc2)
Dim rsReturn
Dim node
Dim attr ,attrs
Dim ObjXmlDoc
Set ObjXmlDoc = CreateObject("MSXML2.DOMDocument.3.0")
'Create/open the disconnected recordset
ObjXmlDoc = objXMLDoc2
Set node = objXMLDoc.selectSingleNode("//AddressObject/")
If( Not node Is Nothing) Then
Set rsReturn = CreateObject("ADODB.Recordset.6.0")
Set attrs = node.getAttributes()
for Each attr In attrs
rsReturn.Fields.Append attr.nodeName, adVarWChar, 255
Next
rsReturn.CursorLocation = adUseClient
rsReturn.CursorType = adOpenStatic
rsReturn.LockType = adLockOptimistic
rsReturn.Open
Set node = Nothing
'Loop/add rows
For Each node In objXMLDoc.selectNodes("//AddressObject/")
rsReturn.AddNew
For Each attr In node.Attributes
If(Not rsReturn(attr.nodeName)Is NOTHING) Then
rsReturn(attr.nodeName) = 1'attr.nodeValue
End if
Next
Next
If rsReturn.RecordCount <> 0 Then rsReturn.MoveFirst
'cExit:
End If
'Dispose DOM document
Set objXMLDoc = Nothing
Set XMLToRecSet = rsReturn
Set rsReturn = Nothing
End Function
答案 0 :(得分:2)
Ado无法处理xml记录集。我认为您需要使用旧的XML解析器来获取数据。您可以将其放入数据库中,然后使用ado在数据库中操作数据。
Classic asp使得使用Soap Web服务变得非常困难。我强烈建议在ASP.net中编写应用程序的这一部分..