SetNamedItem (MSXML): Unterschied zwischen den Versionen

Aus API-Wiki
Wechseln zu: Navigation, Suche
K (Änderungen von 109.73.68.18 (Diskussion) rückgängig gemacht und letzte Version von Helge Rex wiederhergestellt)
Zeile 31: Zeile 31:
 
Dim objAttr As MSXML2.IXMLDOMAttribute
 
Dim objAttr As MSXML2.IXMLDOMAttribute
  
strXml = VBA.Constants.vbNullString
+
strXml = VBA.Constants.<syntaxhighlight lang="vb">NullString
strXml = strXml & "<?xml version=""1.0""?>" & VBA.Constants.vbNewLine
+
strXml = strXml & "<?xml version=""1.0""?>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
strXml = strXml & "<bibliothek>" & VBA.Constants.vbNewLine
+
strXml = strXml & "<bibliothek>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
     strXml = strXml & vbTab & "<buecher>" & VBA.Constants.vbNewLine
+
     strXml = strXml & <syntaxhighlight lang="vb">Tab & "<buecher>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
         strXml = strXml & vbTab & vbTab & "<buch name=""VB für Dummies"" />" & VBA.Constants.vbNewLine
+
         strXml = strXml & <syntaxhighlight lang="vb">Tab & <syntaxhighlight lang="vb">Tab & "<buch name=""VB für Dummies"" />" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
         strXml = strXml & vbTab & vbTab & "<buch name=""Turbo Pascal für Dummies"" />" & VBA.Constants.vbNewLine
+
         strXml = strXml & <syntaxhighlight lang="vb">Tab & <syntaxhighlight lang="vb">Tab & "<buch name=""Turbo Pascal für Dummies"" />" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
     strXml = strXml & vbTab & "</buecher>" & VBA.Constants.vbNewLine
+
     strXml = strXml & <syntaxhighlight lang="vb">Tab & "</buecher>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
strXml = strXml & "</bibliothek>" & VBA.Constants.vbNewLine
+
strXml = strXml & "</bibliothek>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
  
 
Set objXml = New MSXML2.FreeThreadedDOMDocument
 
Set objXml = New MSXML2.FreeThreadedDOMDocument

Version vom 5. November 2016, 23:11 Uhr

Mit setNamedItem kann einem XML-Knoten ein Attribut hinzugefügt werden.

Set Result = object.attributes.setNamedItem(newAttribute)

Parameter

object

(erforderlich) Dokument oder Knoten, dem ein neues Attribut hinzugefügt werden soll (Datentyp DOMDocument, FreeThreadedDOMDocument oder IXMLDOMNode).

newAttribute

(erforderlich) Attribut, welches hinzugefügt werden soll (Datentyp IXMLDOMAttribute)


Rückgabe

Result

(optional) Verweis auf das eingefügte Attribut (Datentyp IXMLDOMAttribute).


Hinweise

Sollte der Knoten das hinzuzufügende Attribut bereits besitzen, so wird der Wert des vorhandenen Attributs mit dem neuen Wert überschrieben.


Beispiel

Dim objXml As MSXML2.FreeThreadedDOMDocument
Dim strXml As String
Dim objNode As MSXML2.IXMLDOMNode
Dim objAttr As MSXML2.IXMLDOMAttribute

strXml = VBA.Constants.<syntaxhighlight lang="vb">NullString
strXml = strXml & "<?xml version=""1.0""?>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
strXml = strXml & "<bibliothek>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
    strXml = strXml & <syntaxhighlight lang="vb">Tab & "<buecher>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
        strXml = strXml & <syntaxhighlight lang="vb">Tab & <syntaxhighlight lang="vb">Tab & "<buch name=""VB für Dummies"" />" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
        strXml = strXml & <syntaxhighlight lang="vb">Tab & <syntaxhighlight lang="vb">Tab & "<buch name=""Turbo Pascal für Dummies"" />" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
    strXml = strXml & <syntaxhighlight lang="vb">Tab & "</buecher>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine
strXml = strXml & "</bibliothek>" & VBA.Constants.<syntaxhighlight lang="vb">NewLine

Set objXml = New MSXML2.FreeThreadedDOMDocument
With objXml
    .async = False
    .validateOnParse = True

    If .loadXML(strXml) Then
        '   Knoten auswählen, der ein neues Attribut erhalten soll
        Set objNode = .selectSingleNode("/bibliothek/buecher/buch[@name='VB für Dummies']")
        
        '   Neues Attribut erzeugen
        Set objAttr = .createAttribute("bewertung")
        objAttr.nodeValue = "sehr gut"
        
        '   Attribut einfügen
        Call objNode.Attributes.setNamedItem(objAttr)
        
        '   Geändertes XML-Dokument anzeigen
        Debug.Print .xml
    Else
        Debug.Print "[Fehler] " & .parseError.reason
    End If
End With

Set objAttr = Nothing
Set objNode = Nothing
Set objXml = Nothing


Weblinks

MSDN Library: setNamedItem