Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

IXMLDOMEntity

Represents a parsed or unparsed entity in the XML document.

BOOL DOMEntityNotationName()
{
    BOOL bResult = FALSE;
    IXMLDOMEntity *pIXMLDOMEntity = NULL;
    BSTR bstrName ;
    HRESULT hr;

    try
    {
        pIXMLDOMEntity = GetFirstEntity();

        if(pIXMLDOMEntity)
        {
            hr =    pIXMLDOMEntity->get_notationName(&bstrName);
            ::MessageBox(NULL, bstrName, _T("Notation name"), MB_OK);
            bResult = TRUE;
            ::SysFreeString(bstrName);
            pIXMLDOMEntity->Release();
        }
    }
    catch(...)
    {
        if(pIXMLDOMEntity)
            pIXMLDOMEntity->Release();
        DisplayErrorToUser();
    }
    return bResult;
}
IXMLDOMEntity* GetFirstEntity()
{
    IXMLDOMNamedNodeMap *pIXMLDOMNamedNodeMapEntities = NULL;
    IXMLDOMEntity *pIXMLDOMEntity = NULL;
    IXMLDOMNode *pIXMLDOMNode = NULL;
    IXMLDOMDocument *pIXMLDOMDocument = NULL;
    HRESULT hr;

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

        if(pIXMLDOMDocumentType)
        {
            hr = pIXMLDOMDocumentType->get_entities 
                (&pIXMLDOMNamedNodeMapEntities);
            if(SUCCEEDED(hr) && pIXMLDOMNamedNodeMapEntities)
            {
                hr = pIXMLDOMNamedNodeMapEntities->nextNode(&pIXMLDOMNode);
                if(SUCCEEDED(hr) && pIXMLDOMNode)
                {
                    hr = pIXMLDOMNode->QueryInterface(IID_IXMLDOMEntity, 
                        (void**)&pIXMLDOMEntity );
                    SUCCEEDED(m_hr) ? 0 : throw m_hr;
                    pIXMLDOMNode->Release();
                }
                pIXMLDOMNamedNodeMapEntities->Release();
            }
            pIXMLDOMDocumentType->Release();
        }
    }
    catch(...)
    {
        if(pIXMLDOMNode)
            pIXMLDOMNode->Release();
        if(m_pIXMLDOMNamedNodeMapEntities)
            m_pIXMLDOMNamedNodeMapEntities->Release();
        if(m_pIXMLDOMDocumentType)
            m_pIXMLDOMDocumentType->Release();
        DisplayErrorToUser();
    }
    // Release pIXMLDOMEntity when finished using it.
    // Release pIXMLDOMDocument when finished using it.
    return pIXMLDOMEntity;
}


IXMLDOMEntity represents the entity itself rather than the entity declaration. The World Wide Web Consortium (W3C) Document Object Model (DOM) does not currently define an object that models the entity declaration.

According to the W3C DOM specification, an XML parser can completely expand entity references into entities before the structure model is passed to the DOM. When these entity references are expanded, the document tree does not contain any entity references.

When Microsoft® XML Core Services (MSXML) validates the XML document, it expands external entities (except binary entities). The nodes representing the expanded entity are available as read-only children of the entity reference. The Microsoft implementation does not expand these entities when it is not validating.

The nodeName property contains the name of the entity.

The structure of the entity child list is exactly the same as the structure of the child list for the IXMLDOMEntityReference object with the same nodeName value.

Level 1 of the W3C DOM application programming interface (API) does not define a way to change entity nodes. (All IXMLDOMEntity object properties are read-only.)

Implementation:

msxml3.dll, msxml2.lib (MSXML 3.0)

msxml6.dll, msxml6.lib (MSXML 6.0)

Header and IDL files: msxml2.h, msxml2.idl, msxml6.h, msxml6.idl

Implemented in: MSXML 3.0, MSXML 6.0

Show:
© 2015 Microsoft