0

Hello

I am writing a vb code that will generate xml files. I am making some progress, but I am stuck. When I run the vb program, the MessageDetails node is not displayed, eventhough it is contained in the vb code. What am I doing wrong? Below is the vb code

'This sample application creates a simple, but complete, XML DOM object,
'with <root> as the document element. This element contains three child elements:
'<node1>, <node2>, and <node3>. The first child element contains character data.
'The second child element contains a CDATA section. The last child element contains
'three empty child elements: <subnode1>, <subnode2>, and <subnode3>.

 Private Function CreateDOM()
    Dim dom
    Set dom = New DOMDocument30
    dom.async = False
    dom.validateOnParse = False
    dom.resolveExternals = False
    dom.preserveWhiteSpace = True
    Set CreateDOM = dom
End Function

Private Sub Form_Load()
    Dim dom, node, attr
    Dim DefaultNS As String
    
    On Error GoTo ErrorHandler

    Set dom = CreateDOM
    
    ' Create a processing instruction targeted for xml.
    Set node = dom.createProcessingInstruction("xml", "version='1.0'")
    dom.appendChild node
    Set node = Nothing
    
    ' Create a processing instruction targeted for xml-stylesheet.
    Set node = dom.createProcessingInstruction("xml-stylesheet", _
                                "type='text/xml' href='test.xsl'")
    dom.appendChild node
    Set node = Nothing
    
    ' Create a comment for the document.
    Set node = dom.createComment("sample xml file created using XML DOM object.")
    dom.appendChild node
    Set node = Nothing
    
    
    
    DefaultNS = "http://www.govtalk.gov.uk/CM/envelope"
    
    ' Create the root element.
    Dim RootElement
    Set RootElement = dom.createNode(NODE_ELEMENT, "GovTalkMessage", DefaultNS)
     Set node = dom.createNode(NODE_ELEMENT, "EnvelopeVersion", DefaultNS)

    ' Add the root element to the DOM instance.
    dom.appendChild RootElement
    ' Insert a newline + tab.
    RootElement.appendChild dom.createTextNode(vbNewLine + vbTab)
    ' Create and add more nodes to the root element just created.
    ' Create a text element.
   ' Set node = dom.createElement("node1")
    node.Text = "2.0"
    ' Add text node to the root element.
    RootElement.appendChild node
    Set node = Nothing
      ' Add a newline plus tab.
    RootElement.appendChild dom.createTextNode(vbNewLine + vbTab)
    
    ' Create an element to hold a CDATA section.
    'Set node = dom.createElement("node2")
    Set node = dom.createNode(NODE_ELEMENT, "Header", DefaultNS)

    Set cd = dom.createCDATASection("<some mark-up text>")
    node.appendChild cd
    Set cd = Nothing
    dom.documentElement.appendChild node
    
    Set node = dom.createNode(NODE_ELEMENT, "MessageDetails", DefaultNS)
    
    Set node = Nothing
      ' Add a newline plus tab.
    RootElement.appendChild dom.createTextNode(vbNewLine + vbTab)
    
    ' Create an element to hold three empty subelements.
  '  Set node = dom.createElement("node3")
    Set node = dom.createNode(NODE_ELEMENT, "node3", DefaultNS)
   
    RootElement.appendChild node
       ' Add a newline.
    RootElement.appendChild dom.createTextNode(vbNewLine)
    Set node = Nothing
    
    ' Save the XML document to a file.
    dom.save App.Path + "\dynamDom.xml"
    Set RootElement = Nothing
    Set dom = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox Err.Description
End Sub

below is the generated XML

<?xml version="1.0"?>
<?xml-stylesheet type='text/xml' href='test.xsl'?>
<!--sample xml file created using XML DOM object.-->
<GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
	<EnvelopeVersion>2.0</EnvelopeVersion>
	<Header><![CDATA[<some mark-up text>]]></Header>
	<node3/>
</GovTalkMessage>

the messageDetails element is missing

2
Contributors
1
Reply
2
Views
8 Years
Discussion Span
Last Post by gravyboat
0

You set your node to "nothing" before you append it:

Set node = dom.createNode(NODE_ELEMENT, "MessageDetails", DefaultNS)
    
    Set node = Nothing
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.