Consulting

Results 1 to 3 of 3

Thread: XML Node attributes

  1. #1
    VBAX Regular
    Joined
    Aug 2010
    Posts
    19
    Location

    XML Node attributes

    Hi, i am trying to create a function to set attributes to nodes in xml files.

    I found the following code online which creates an xml in one sub;
    [vba]' This procedure creates XML document
    ' and saves it to disk.
    ' Requires msxml.dll (Go to Project --> References and
    ' and choose Microsoft XML version 2.0, or whatever the
    ' current version you have installed)
    ' The example given below will write the following XML
    ' documents.
    '
    ' <Family>
    ' <Member Relationship="Father">
    ' <Name>Some Guy</Name>
    ' </Member>
    ' </Family>
    '
    'but it should be clear how to modify the code
    'to create your own documents
    Private Sub Create_XML()

    Dim objDom As DOMDocument
    Dim objRootElem As IXMLDOMElement
    Dim objMemberElem As IXMLDOMElement
    Dim objMemberRel As IXMLDOMAttribute
    Dim objMemberName As IXMLDOMElement

    Set objDom = New DOMDocument

    ' Creates root element
    Set objRootElem = objDom.createElement("Family")
    objDom.appendChild objRootElem

    ' Creates Member element
    Set objMemberElem = objDom.createElement("Member")
    objRootElem.appendChild objMemberElem

    ' Creates Attribute to the Member Element
    Set objMemberRel = objDom.createAttribute("Relationship")
    objMemberRel.nodeValue = "Father"
    objMemberElem.setAttributeNode objMemberRel

    ' Create element under Member element, and
    ' gives value "some guy"
    Set objMemberName = objDom.createElement("Name")
    objMemberElem.appendChild objMemberName
    objMemberName.Text = "Some Guy"
    ' Saves XML data to disk.
    objDom.save ("c:\temp\andrew.xml")
    End Sub
    [/vba]

    However i want to seperate out the attribute code to a seperate sub, this is what i have so far however it errors on the last line of the new sub.

    [vba]Private Sub Create_XML()

    Dim objDom As DOMDocument
    Dim objRootElem As IXMLDOMElement
    Dim objMemberElem As IXMLDOMElement
    Dim objMemberRel As IXMLDOMAttribute
    Dim objMemberName As IXMLDOMElement

    Set objDom = New DOMDocument

    ' Creates root element
    Set objRootElem = objDom.createElement("Family")
    objDom.appendChild objRootElem

    ' Creates Member element
    Set objMemberElem = objDom.createElement("Member")
    objRootElem.appendChild objMemberElem

    ' Creates Attribute to the Member Element
    Call Add_Attribute(objDom, objMemberElem, "Relationship", "Father")

    ' Create element under Member element, and
    ' gives value "some guy"
    Set objMemberName = objDom.createElement("Name")
    objMemberElem.appendChild objMemberName
    objMemberName.Text = "Some Guy"
    ' Saves XML data to disk.
    objDom.Save ("H:\documents\The Project\XML File\XML_Test3.xml")
    End Sub
    Sub Add_Attribute(Document As DOMDocument, Node_Used As IXMLDOMElement, Attribute_Name As String, Attribute_Value As String)
    Dim Attribute_holder As IXMLDOMAttribute
    Set Attribute_holder = Document.createAttribute(Attribute_Name)
    Attribute_holder.nodeValue = Attribute_Value
    Node_Used.setAttributeNode (Attribute_holder)
    End Sub[/vba]

    Any help would be appreciated.

  2. #2
    VBAX Regular
    Joined
    Aug 2010
    Posts
    19
    Location
    I found that using;
    Node_Used.setAttributeNode Attribute_holder
    instead of ;
    Node_Used.setAttributeNode (Attribute_holder)
    works. However i am not sure why it would fail if written with brackets?

  3. #3
    That’s great now it's easy to create any function because we are find all over the xml code from internet or other sources. Recently I am create my research paper software with the using of xml code and that’s working great.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •