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