PDA

View Full Version : XML Node attributes



Atravis
09-01-2010, 04:54 AM
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;
' 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


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.

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

Any help would be appreciated.

Atravis
09-01-2010, 10:08 AM
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?

Nancyze
09-30-2018, 09:18 AM
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 (https://www.thebestessayshelp.com/research-papers.html) software with the using of xml code and that’s working great.