Signori, non ci siamo proprio. Non è questo il modo da seguire per creare un XML in vb6.
Esiste la libreria msxml6.dll da utilizzare come riferimento (menu progetto, riferimenti, microsoft XML 6.0).
Poi ci va il codice.
breve esempio:
' ****** dichiarazione oggetti XML per apertura file
Dim oXML As DOMDocument60
Dim nameXML As IXMLDOMNodeList
Dim elemXML As IXMLDOMElement
Dim nodeXML As IXMLDOMNode
Dim nodeListXML As IXMLDOMNodeList
' creazione file XML
Dim dom
Set dom = New DOMDocument60
dom.async = False
dom.validateOnParse = False
dom.resolveExternals = False
dom.preserveWhiteSpace = True
Set CreateDOM = dom
' inzia a creare l'XML
' create dom document
Set objDoc = XMLCreateDoc
' Create a processing instruction targeted for xml.
XMLCreateProcessingInstruction objDoc, "xml", "version='1.0' encoding='UTF-8'"
' <p:FatturaElettronica>
Set objNodeRoot = XMLCreateNode(objDoc, Nothing, "ns2:FatturaElettronica")
' <versione>
XMLCreateAttribute objDoc, objNodeRoot, "versione", XMLInvoiceType
' <xmlns:ds>
XMLCreateAttribute objDoc, objNodeRoot, "xmlns:ds", "http://www.w3.org/2000/09/xmldsig#"
' <xmlns:p>
XMLCreateAttribute objDoc, objNodeRoot, "xmlns:ns2", "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
' <xmlns:xsi>
XMLCreateAttribute objDoc, objNodeRoot, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
' <xsi:schemaLocation>
XMLCreateAttribute objDoc, objNodeRoot, "xsi:schemaLocation", "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd "
' ---- XML header ----
' <FatturaElettronicaHeader>
Set objNodeHeader = XMLCreateNode(objDoc, objNodeRoot, "FatturaElettronicaHeader")
' <DatiTrasmissione>
Set objNode1 = XMLCreateNode(objDoc, objNodeHeader, "DatiTrasmissione")
' <IdTrasmittente>
Set objNode2 = XMLCreateNode(objDoc, objNode1, "IdTrasmittente")
XMLCreateNode objDoc, objNode2, "IdPaese", dbField2Var(ADOrsXMLM1.Fields("ISOStato"), dbCTString)
XMLCreateNode objDoc, objNode2, "IdCodice", dbField2Var(ADOrsXMLM1.Fields("CodFisc"), dbCTString)
' <ProgressivoInvio>
Set objNode2 = XMLCreateNode(objDoc, objNode1, "ProgressivoInvio", ConvStr(IDFatturaPA, 5))
' <FormatoTrasmissione>
Set objNode2 = XMLCreateNode(objDoc, objNode1, "FormatoTrasmissione", XMLInvoiceType)
' <CodiceDestinatario>
Set objNode2 = XMLCreateNode(objDoc, objNode1, "CodiceDestinatario", dbField2Var(ADOrsFPA.Fields("GovCodiceDestinatario"), dbCTString))
' <ContattiTrasmittente>
Set objNode2 = XMLCreateNode(objDoc, objNode1, "ContattiTrasmittente")
XMLCreateNode objDoc, objNode2, "Telefono", GetNum(dbField2Var(ADOrsXMLM1.Fields("Telefono1"), dbCTString))
XMLCreateNode objDoc, objNode2, "Email", dbField2Var(ADOrsXMLM1.Fields("Email"), dbCTString)
' <PECDestinatario>
If dbField2Var(ADOrsFPA.Fields("GovCodiceDestinatario"), dbCTString) = "0000000" Then
Set objNode2 = XMLCreateNode(objDoc, objNode1, "PECDestinatario", dbField2Var(ADOrsFPA.Fields("PEC"), dbCTString))
End If
' <CedentePrestatore>
Set objNode1 = XMLCreateNode(objDoc, objNodeHeader, "CedentePrestatore")
' <DatiAnagrafici>
.........
............
...........
' funzioni utilizzate:
' ------------------------------------------------
' sub per creazione file XML
' testate e funzionanti - 23 ago 2014
'
' http://www.vbforums.com/showthread.php?538334-Child-Elements-(XML-with-VB6)
'
Private Function XMLCreateDoc()
' crea il documento XML
Dim objDoc
Set objDoc = New DOMDocument60
objDoc.async = False
objDoc.validateOnParse = False
objDoc.resolveExternals = False
objDoc.preserveWhiteSpace = True
Set XMLCreateDoc = objDoc
End Function
Private Sub XMLCreateProcessingInstruction(XMLDoc As DOMDocument60, InstrName As String, InstrValue As String)
Dim objNode As IXMLDOMProcessingInstruction
Set objNode = XMLDoc.createProcessingInstruction(InstrName, InstrValue)
XMLDoc.appendChild objNode
Set objNode = Nothing
End Sub
Private Sub XMLCreateComment(XMLDoc As DOMDocument60, ByVal CommentText As String)
Dim objComment As IXMLDOMComment
Set objComment = XMLDoc.createComment(CommentText)
XMLDoc.appendChild objComment
Set objComment = Nothing
End Sub
Private Function XMLCreateNode(XMLDoc As DOMDocument60, ParentNode As IXMLDOMNode, NodeName As String, Optional NodeValue As String = "") As IXMLDOMNode
' crea un nodo nel documento XML
Dim objNode As IXMLDOMNode
'Create the node
Set objNode = XMLDoc.createElement(NodeName)
'Add the text if it has any
If NodeValue <> "" Then
objNode.text = NodeValue
End If
'Add the node to the document
If ParentNode Is Nothing Then
XMLDoc.appendChild objNode
Else
ParentNode.appendChild objNode
End If
Set XMLCreateNode = objNode
Set objNode = Nothing
End Function
Private Sub XMLCreateAttribute(XMLDoc As DOMDocument60, oNode As IXMLDOMNode, AttribName As String, AttribValue As String)
Dim oElement As IXMLDOMElement
Set oElement = oNode
oElement.setAttribute AttribName, AttribValue
Set oElement = Nothing
End Sub
Private Sub XMLFormatDoc(ByVal xml_doc As DOMDocument60)
' Add formatting to the document.
XMLFormatNode xml_doc.documentElement, 0
End Sub
Private Sub XMLFormatNode(ByVal node As IXMLDOMNode, ByVal indent As Integer)
' Add formatting to this element. Indent it and add a
' carriage return before its children. Then recursively
' format the children with increased indentation.
Dim child As IXMLDOMNode
Dim text_only As Boolean
' Do nothing if this is a text node.
If TypeOf node Is IXMLDOMText Then Exit Sub
' See if this node contains only text.
text_only = True
If node.hasChildNodes Then
For Each child In node.childNodes
If Not (TypeOf child Is IXMLDOMText) Then
text_only = False
Exit For
End If
Next child
End If
' Process child nodes.
If node.hasChildNodes Then
' Add a carriage return before the children.
If Not text_only Then
node.insertBefore node.ownerDocument.createTextNode(vbCrLf), node.firstChild
End If
' Format the children.
For Each child In node.childNodes
XMLFormatNode child, indent + 2
Next child
End If
' Format this element.
If indent > 0 Then
' Indent before this element.
node.ParentNode.insertBefore node.ownerDocument.createTextNode(Space$(indent)), node
' Indent after the last child node.
If Not text_only Then node.appendChild node.ownerDocument.createTextNode(Space$(indent))
' Add a carriage return after this node.
If node.nextSibling Is Nothing Then
node.ParentNode.appendChild node.ownerDocument.createTextNode(vbCrLf)
Else
node.ParentNode.insertBefore node.ownerDocument.createTextNode(vbCrLf), node.nextSibling
End If
End If
End Sub
' ---------------------------------------