Public Function ReadXMLFile(lngTemplateID As Long, strFile As String, lngID As Long, lngReportID As Long) As Boolean
On Error GoTo Err_ReadXMLFile
Dim docXML As New DOMDocument
Dim nodeRoot, myNode
Dim fOK As Boolean
Dim intLevel As Integer, intNodesRead As Integer
Dim strFileStream As String
Dim lngHeaderID As Long
Dim objRpt As New Reporting
If Len(strFile) > 0 Then strFileStream = ReadAllTextFile(strFile)
If Len(strFileStream) > 0 Then
strFileStream = ReplaceOddSigns(strFileStream)
docXML.LoadXML strFileStream
Set nodeRoot = docXML.DocumentElement
If nodeRoot.HasChildNodes Then
lngHeaderID = objRpt.InsertReportingLine(lngTemplateID, 0, "Import XML file", "IMPF", 1, strFile, 0, lngReportID) 'fInsertHeader(lngBuildID, lngTemplateID, strFile)
intLevel = 0
For Each myNode In nodeRoot.ChildNodes
intNodesRead = intNodesRead + fReadNodes(lngHeaderID, intLevel, lngID, myNode)
Next myNode
ReadXMLFile = True
Else
ReadXMLFile = False
End If
Else
ReadXMLFile = False
End If
Exit_ReadXMLFile:
Set docXML = Nothing
Exit Function
Err_ReadXMLFile:
ReadXMLFile = False
Debug.Print err.Number & ": " & err.Description & " in " & strFile
Resume Exit_ReadXMLFile
End Function
Private Function fReadNodes(lngImportID As Long, intLvl As Integer, lngID As Long, objNode) As Integer
On Error GoTo Err_fReadNodes
'tmpImportStructureXML
Dim intCountNodes As Integer
Dim cnn As ADODB.Connection
Dim rst As New ADODB.Recordset
Dim objChildNode
Set cnn = CurrentProject.Connection
rst.Open "tmpImportStructureXML", cnn, adOpenKeyset, adLockPessimistic
With rst
.AddNew
!isxImport_ID = lngImportID
!isxNodeLevel = intLvl
!isxTransferID = lngID
!isxParentNode = objNode.ParentNode.nodeName
!isxNodeName = objNode.nodeName
!isxNodeValue = objNode.NodeValue
.Update
.Close
End With
intCountNodes = intCountNodes + 1
If objNode.HasChildNodes Then
'Debug.Print objNode.nodeName
For Each objChildNode In objNode.ChildNodes
intCountNodes = intCountNodes + fReadNodes(lngImportID, intLvl + 1, lngID, objChildNode)
Next objChildNode
End If
fReadNodes = intCountNodes
Exit_fReadNodes:
Set cnn = Nothing
Set rst = Nothing
Exit Function
Err_fReadNodes:
Debug.Print err.Number & ": " & err.Description
fReadNodes = -1
Resume Exit_fReadNodes
End Function