Reputation: 61
I've been searching the net for how to set an attribute in an XMLNode. I've found answers for XDocument but not for XMLNode. What I'm doing is checking if the id attribute exists in a element if it does not I need to make it. So far I've had no luck. setAttribute is only available in XDocument.
Code
Dim acronymList As XmlNodeList 'For getting the list of main/parent nodes
Dim acroterm As String
acronymList = newNode.GetElementsByTagName("acronym") 'Setting all <acronym> node to list
For Each acronym As XmlNode In acronymList 'Looping through <acronym> node
If acronym.Attributes.GetNamedItem("id") IsNot Nothing Then
existingAcro = acronym.Attributes("id").Value
For Each childnode As XmlNode In acronym 'Looping all <acronym> childnodes
If childnode.Name = "acronymTerm" Then
acroterm = childnode.InnerText
'Convert acroterm characters to lowercase
acroterm = acroterm.ToLower
acroterm = acroterm + newFICount.ToString
acronym.Attributes("id").Value = acroterm
Debug.Write(vbCr + "old acronym ID: " + existingAcro + " / new acronym ID " + acroterm)
dictionary.Add(existingAcro, acroterm)
End If
Next
Else
' Acronym Element does not have an ID assign it
' set id attribute to acroterm
End If
Next
XML Example
<action>ESC
<acronym>
<acronymTerm>HDD</acronymTerm>
<acronymDefinition>High Definition</acronymDefinition>
</acronym>
</action>
Upvotes: 0
Views: 375
Reputation: 2685
Start from something like this:
For Each acronym As XmlNode In acronymList
If acronym.Attributes IsNot Nothing AndAlso
acronym.Attributes.Count > 0 AndAlso
acronym.Attributes.Item("id") IsNot Nothing Then
' do your code
'.....
'.....
'.....
'.....
'.....
Else
Dim attrID As XmlAttribute = acronym.OwnerDocument.CreateAttribute("id")
attrID.Value = "pippo_pluto_paperino"
acronym.Attributes.Append(attrID)
'.....
'.....
'.....
'.....
'.....
End If
Next
Upvotes: 1