Sample code for 30+ languages & platforms
PureBasic

AddAttribute - Insert New Attribute in an XML Node

Demonstrates adding an name=value attribute to an XML element.

This example uses the XML sample file here: sample1.xml. The sample1.xml file contains this content:

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkXml.pb"

Procedure ChilkatExample()

    success.i = 0

    xml.i = CkXml::ckCreate()
    If xml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkXml::ckLoadXmlFile(xml,"qa_data/xml/sample1.xml")
    If success <> 1
        Debug CkXml::ckLastErrorText(xml)
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    ; Navigate to the "books" element:
    bFound.i = CkXml::ckFindChild2(xml,"books")
    If bFound = 0
        Debug "No books child found!"
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    numChildren.i = CkXml::ckNumChildren(xml)

    i.i = 0
    While i < numChildren

        ; Navigate to the Nth book 
        CkXml::ckGetChild2(xml,i)

        ; Display the book title:
        Debug CkXml::ckGetAttrValue(xml,"title")

        ; Add a new integer attribute:
        ; Should never fail..
        CkXml::ckAddAttributeInt(xml,"bookId",i)

        ; Add a new unread="yes" attribute:
        CkXml::ckAddAttribute(xml,"unread","yes")

        ; Navigate back up to the parent:
        CkXml::ckGetParent2(xml)

        i = i + 1
    Wend

    ; Navigate back to the document root:
    CkXml::ckGetRoot2(xml)

    ; Save the updated document:
    success = CkXml::ckSaveXml(xml,"modified.xml")
    If success <> 1
        Debug CkXml::ckLastErrorText(xml)
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    Debug CkXml::ckGetXml(xml)


    CkXml::ckDispose(xml)


    ProcedureReturn
EndProcedure