JenPann
JenPann

Reputation: 61

Create attribute if it does not exist in XMLNode

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

Answers (1)

G3nt_M3caj
G3nt_M3caj

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

Related Questions