Retrieving Attributes
Prev |  | Next

## Retrieving Attributes

Retrieving the value of an attribute is similar to the previous example in which we retrieved a node's text contents. In this case we'll extract the value of the URI we added in the previous section. Full code: Appendix G, Code for Retrieving Attribute Value Example.

The initial steps for this example are similar to the previous ones: parse the doc, find the element you are interested in, then enter a function to carry out the specific task required. In this case, we call `getReference`:

    void
    getReference (xmlDocPtr doc, xmlNodePtr cur) {

    	xmlChar *uri;
    	cur = cur->xmlChildrenNode;
    	while (cur != NULL) {
    	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"reference"))) {
    		    uri = xmlGetProp(cur, "uri");
    		    printf("uri: %s\n", uri);
    		    xmlFree(uri);
    	    }
    	    cur = cur->next;
    	}
    	return;
    }

The key function is `xmlGetProp`, which returns an `xmlChar` containing the attribute's value. In this case, we just print it out.

| Note
If you are using a DTD that declares a fixed or default value for the attribute, this function will retrieve it.

Prev | Up | Next
Writing Attribute | Home | Encoding Conversion