Создать атрибут, если он не существует в XMLNode - PullRequest
0 голосов
/ 19 марта 2020

Я искал net, как установить атрибут в XMLNode. Я нашел ответы для XDocument, но не для XMLNode. Я проверяю, существует ли атрибут id в элементе, если он мне не нужен. Пока что мне не повезло. setAttribute доступен только в XDocument.

Код

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 Пример

<action>ESC
  <acronym>
    <acronymTerm>HDD</acronymTerm>
    <acronymDefinition>High Definition</acronymDefinition>
  </acronym>
</action>

1 Ответ

1 голос
/ 19 марта 2020

Начните примерно так:

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...