2009-09-10 7 views

답변

1

(이 쿼리는 프록시에서 게시했습니다.) 정확한 지식은 웹 서비스 api에서 반환 한 MSXML2.IXMLDOMNodeList 개체를 가져 와서 노드에서 데이터를 추출하는 것입니다. MSXML 전문가가되고 싶지는 않지만 XML 버전에 대해서는이 작업을 수행하는 코드가 있습니다. 다음은 XML 입력과 함께 작동하는 버전입니다. nodeList 입력을 사용하여 XML 입력을 변경하려면 어떻게해야합니까? (노드 목록을 XML로 출력 할 수 있습니까? 나머지 단계에서도 도움이 될 것입니다.

(추가 : ) 노드가있는 .xml 속성을 시도했는데 실제로 전체 XML을 제공합니다. 분명히 api 단일 노드를 사용하여 노드 목록을 보내고 그 단일 노드에 .xml 속성을 적용하면 전체 XML 문서가 생성됩니다 (여기서는 표시 방법을 알 수 없으며 XML은 미리보기에서 처리됩니다). (/ 추가됨)

 
Private Sub ParseXML_Click() 

Dim thisXML As MSXML2.DOMDocument 
Dim fSuccess As Boolean 
Dim oRoot  As MSXML2.IXMLDOMNode 
Dim oBooking As MSXML2.IXMLDOMNode 
Dim oChildren As MSXML2.IXMLDOMNodeList 
Dim oChild As MSXML2.IXMLDOMNode 
Dim theDB As Database 
Dim theRST As Recordset 

Set theDB = CurrentDb 
Set theRST = theDB.OpenRecordset("XMLBookings", dbOpenDynaset) 

Set thisXML = New MSXML2.DOMDocument 
thisXML.async = False 
thisXML.validateOnParse = False 
fSuccess = thisXML.LoadXml(Bookings_fld) 
' If anything went wrong, quit now. 
If NotfSuccess Then 
    GoTo ExitHere 
End If 

Set oRoot = thisXML.documentElement 
For Each oBooking In oRoot.childNodes 
    theRST.AddNew 
    Set oChildren = oBooking.childNodes 
    For Each oChild In oChildren 
     Select Case oChild.nodeName 
     Case "EventName" 
'   MsgBox "EventName = " & oChild.nodeTypedValue 
      theRST!EventName = oChild.nodeTypedValue 
     Case 
     (etc) 

     End Select 
    Next oChild 
     theRST.Update       ' Save changes. 
Next oBooking 

MsgBox "Done!" 
theRST.Close 
Set theDB = Nothing 

ExitHere: 
     Exit Sub 
HandleErr: 
     MsgBox "Error " & Err.Number & ": " & Err.Description 
     Resume ExitHere 
     Resume 

End Sub 
1

각 IXmlDomNode에 Xml property을 사용할 수 있습니다.

0

VBA에서는이 작업을 수행합니다.

는이 같은 일부 코드 툴에

쓰기 해당 MSXML DLL을 추가

Public Function getFromXML(x_fileXML as string) as string 

On Error GoTo ERREUR 

     Dim doc_xml As MSXML2.DOMDocument, _ 
      list_xml As IXMLDOMNodeList, _ 
      i As Long, _ 
      m_getFromXML as string 


Set doc_xml = New MSXML2.DOMDocument 

doc_xml.Load x_fileXML 

'i am interested by the nodeLists having a "attributeType: tag"' 
Set list_xml = doc_xml.getElementsByTagName("s:AttributeType") 
For i = 0 To (list_xml.Length - 1) 
    'extract the requested data here' 
    'something like m_getFromXML = m_getFromXML & ";" & ...' 
Next i 

getFromXML = m_getFromXML 

이는 즉석에서 작성되었습니다. proc을 종료하기 전에 아무 것도 닫히지 않거나 설정할 객체를 확인하십시오.

0

이 정말 액세스 2003 년. 당신은 XML을 할 계획에 따라 달라집니다, 2007 년 우리는 XML을 가져올 수 있습니다.

데이터 테이블 인 xml 문자열이 있으면 데이터를 받고 디스크에 기록한 다음 Application.ImportXML을 실행할 수 있습니다. 이 방법은 코드가 적고 여기에 다른 대답이 있습니다. 여기

이 개념 코드 싹둑입니다 :

Dim intF  As Integer 
Dim strF  As String 
Dim objXML  As Object 

Set objXML = CreateObject("MSXML2.XMLHTTP") 
objXML.Open "GET", "URL string here", False 
objXML.Send 

strF = "c:\t.xml" 
intF = FreeFile 
Open strF For Output As intF 
Write #intF, objXML.responsetext 
Close 

Application.ImportXML "c:\t.xml", acAppendData 

위는 XML은 텍스트 카탈로그 또는 테이블 데프이 있다고 가정 할

예 :

<CATALOG> 
<tblContacts> 
<ID>1</ID> 
<Last_x0020_Name>Kallal</Last_x0020_Name> 
<First_x0020_Name>Albert</First_x0020_Name> 
</tblContacts> 
<tblContacts> 
<ID>2</ID> 
<Last_x0020_Name>Smo</Last_x0020_Name> 
<First_x0020_Name>Joe</First_x0020_Name> 
</tblContacts> 
</CATALOG> 
관련 문제