Partager via


IXMLDOMAttribute

 

Represents an attribute of the IXMLDOMElement. Valid and default values for the attribute are defined in a document type definition (DTD) or schema.

JScript Example

The following JScript example creates an IXMLDOMAttribute object from the first attribute of the root and displays the object's value and xml properties.

Note

You can use books.xml to help run the following sample code.

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");  
var root;  
var objDOMatt;  
xmlDoc.async = false;  
xmlDoc.load("books.xml");  
if (xmlDoc.parseError.errorCode != 0) {  
   var myErr = xmlDoc.parseError;  
   WScript.Echo("You have error " + myErr.reason);  
} else {  
   root = xmlDoc.documentElement;  
   objDOMatt = root.firstChild.attributes.item(0);  
   WScript.Echo(objDOMatt.value);  
   WScript.Echo(objDOMatt.xml);  
}  
  

Comments

Output

bk101

id="bk101"

C++ Example

#include “msxml6.h”  
  
#define CHECK_AND_RELEASE(pInterface)  \  
if(pInterface) \  
{\  
   pInterface->Release();\  
   pInterface = NULL;\  
}\  
  
#define RELEASE(pInterface)  \  
{\  
   pInterface->Release();\  
   pInterface = NULL;\  
}\  
  
int main(int argc, char* argv[])  
{  
   _variant_t varValue;  
   BSTR bstrAttributeName = ::SysAllocString(_T("dateCreated"));  
   IXMLDOMAttribute *pIXMLDOMAttribute = NULL;  
   IXMLDOMElement *pIXMLDOMElement = NULL;  
   IXMLDOMDocument *pIXMLDOMDocument = NULL;  
   HRESULT hr;  
  
   try  
   {  
      // Initialize pIXMLDOMDocument and load an  
      // XML file into it.  
      // Get the document root.  
      hr = pIXMLDOMDocument->get_documentElement( &pIXMLDOMElement);  
      SUCCEEDED(hr) ? 0 : throw hr;  
      if(pIXMLDOMElement)  
      {  
         varValue = _T("Year 2000");  
  
         // Set the "dateCreated" attribute to "year 2000"  
         hr = pIXMLDOMElement->setAttribute(bstrAttributeName, varValue);  
         SUCCEEDED(hr) ? 0 : throw hr;  
  
         // Retrieve the changed attribute.  
         hr = pIXMLDOMElement->getAttributeNode(bstrAttributeName,  
                                                &pIXMLDOMAttribute);  
         SUCCEEDED(hr) ? 0 : throw hr;  
  
         pIXMLDOMAttribute->get_nodeValue(&varValue);  
  
         if(varValue.vt != VT_NULL)  
         {  
            // Display the retrieved attribute in a message box.  
            ::MessageBox(NULL, _bstr_t(varValue), bstrAttributeName, MB_OK);  
         }  
         RELEASE(pIXMLDOMElement);  
          RELEASE(pIXMLDOMAttribute);  
      }  
      ::SysFreeString(bstrAttributeName);  
      bstrAttributeName=NULL;  
   }  
   catch(...)  
   {  
      if(bstrAttributeName)  
      {  
         ::SysFreeString(bstrAttributeName);  
         bstrAttributeName = NULL;  
      }  
      CHECK_AND_RELEASE(pIXMLDOMElement);  
      //   DisplayErrorToUser();  
   }  
   // Release pIXMLDOMDocument when finished with it.  
   return 0;  
}  
  

Comments

Output

The following is output in a message box:

Year 2000

Remarks

Attribute nodes cannot be the immediate children of IXMLDOMDocumentFragment. However, they can be associated with element nodes that are children of IXMLDOMDocumentFragment node.

The relationship between the value and specified members can be summarized as follows: If the attribute has an assigned value in the document and the specified property is True, the value is the assigned value. If the attribute has no assigned value in the document and has a default value in the DTD, the specified property is False and the value is the default value in the DTD. If the attribute has no assigned value in the document and has a value of #IMPLIED in the DTD, the attribute does not appear in the structure model of the document.

In XML, the child nodes of the attribute node represent the value of an attribute because the value can contain entity references. Thus attributes that contain entity references will have a child list containing both text nodes and entity reference nodes. In addition, because the attribute type might be unknown, there are no tokenized attribute values.

In C/C++, IXMLDOMAttribute inherits IXMLDOMNode but are not actually child nodes of the element and are not considered part of the document tree. Attributes are considered members of their associated elements rather than independent and separate. Thus IXMLDOMAttributeparentNode, previousSibling, and nextSibling members have the value Null.

Requirements

Implementation:

msxml3.dll, msxml2.lib (MSXML 3.0)

msxml6.dll, msxml6.lib (MSXML 6.0)

Header and IDL files (C/C++): msxml2.h, msxml2.idl, msxml6.h, msxml6.idl

Inherits From (C/C++):IXMLDOMNode

Versioning

Implemented in: MSXML 3.0, MSXML 6.0

See Also

IXMLDOMAttribute Members
IXMLDOMElement
IXMLDOMDocumentFragment
value Property1
specified Property
IXMLDOMNode
parentNode Property1
previousSibling Property1
nextSibling Property1