5 out of 9 rated this helpful - Rate this topic

getAttribute Method

Gets the value of the attribute.

objValue = oXMLDOMElement.getAttribute(name);

Parameters

name

A string specifying the name of the attribute to return.

Return Value

A variant. Returns the value as a string if the attribute value is a non-empty string. Returns Null if the named attribute does not have a specified value, or an implied default value, such as one taken from a DTD or schema.

Example

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
var nodeBook, sIdValue;
xmlDoc.async = false;
xmlDoc.load("books.xml");
if (xmlDoc.parseError.errorCode != 0) {
   var myErr = xmlDoc.parseError;
   WScript.Echo("You have error " + myErr.reason);
} else {
   nodeBook = xmlDoc.selectSingleNode("//book");
   sIdValue = nodeBook.getAttribute("id")
   WScript.Echo(sIdValue);
}

Output

When used with the sample XML file (books.xml), this example returns "bk101", the value of the id attribute for the first instance of the <book> element in books.xml.

HRESULT getAttribute(
    BSTR name,
    VARIANT *value);

Parameters

name[in]

The name of the attribute to return.

value[out, retval]

The string that contains the attribute value. The empty string is returned if the named attribute does not have a default value specified.

Return Values

S_OK

The value returned if successful.

S_FALSE

The value when no attribute with the given name is found.

E_INVALIDARG

The value returned if the name parameter is Null.

Example

BOOL DOMElementAttribute()
{
   BOOL bResult = FALSE;
   _variant_t varValue;
   BSTR bstrAttributeName = ::SysAllocString(_T("dateCreated"));
   IXMLDOMDocument *pIXMLDOMDocument = NULL;
   IXMLDOMElement *pIXMLDOMElement = NULL;
   HRESULT hr;

   try
   {
      // Create an instance of DOMDocument and initialize 
      // pIXMLDOMDocument.
      // Load/create an XML fragment.
      hr = pIXMLDOMDocument->get_documentElement(&pIXMLDOMElement);
      SUCCEEDED(hr) ? 0 : throw hr;

      If(pIXMLDOMElement)
      {
         varValue = _T("year 2000");
         hr = pIXMLDOMElement->setAttribute(bstrAttributeName, varValue);
         SUCCEEDED(hr) ? 0 : throw hr;

         hr = pIXMLDOMElement->getAttribute(bstrAttributeName, &varValue);
         SUCCEEDED(hr) ? 0 : throw hr;
         if(varValue.vt != VT_NULL)
         {
            ::MessageBox(NULL, _bstr_t(varValue), bstrAttributeName, MB_OK);
            bResult = TRUE;
         }
         ::SysFreeString(bstrAttributeName);
         bstrAttributeName = NULL;
         pIXMLDOMElement->Release();
      }
   }
   catch(...)
   {
      if(bstrAttributeName)
         ::SysFreeString(bstrAttributeName);
      if(pIXMLDOMElement)
         pIXMLDOMElement->Release();
      DisplayErrorToUser();
   }
   return bResult;
}

You can also retrieve attributes by using the getNamedItem method of the IXMLDOMNamedNodeMap.

Implemented in: MSXML 3.0 and MSXML 6.0

Did you find this helpful?
(1500 characters remaining)