/////////////////////////////////////////////////////// // RADEventsXML::ConstructEventNode // // Creates an XMLEvent node from a RADEvent object // // An example XML node as text: // <Event num="0057" // starttime="0000020010826175602000" endtime="0000020010826175827000" // maxtime="0000020010826175702000" // sum="10941.0" maxvalue="84" // starttimedisplay="2001.08.26 - 17:56:02" // endtimedisplay="2001.08.26 - 17:58:27" // maxtimedisplay="2001.08.26 - 17:57:02" // etype="Channel" // stationname="GRAND 2" /> // // Note: the text attribute values are created from the strings // on the RADEvent object. // // Input: // pEvent - the RADEvent instance // // Returns: // IXMLDOMElement: the constructed Event node, // or a NULL pointer if processing failed. // /////////////////////////////////////////////////////// IXMLDOMElement* RADEventsXML::ConstructEventNode(RADEvent* pEvent) { IXMLDOMElement *pEventElement = NULL; _variant_t var1; _bstr_t bstr1; HRESULT hr; IXMLDOMAttribute *pAttNode=NULL; IXMLDOMNode *pIXMLDOMNode=NULL; IXMLDOMNamedNodeMap* pAttMap = NULL; int j; // construct <Event> bstr1 = "Event"; HRCALL(m_pXMLDom->createElement(bstr1,&pEventElement),"create <Event> "); HRCALL(pEventElement->get_attributes(&pAttMap), "get_attributes: "); for (j = 0; j < eRADAttMax; j++) { var1 = pEvent->values[j]; HRCALL(m_pXMLDom->createAttribute(atts[j], &pAttNode), "create attribute"); HRCALL(pAttNode->put_nodeValue(var1), "node value"); HRCALL(pAttMap->setNamedItem(pAttNode, &pIXMLDOMNode), "set named item"); if (pIXMLDOMNode) pIXMLDOMNode->Release(); } clean: if (pAttMap) pAttMap->Release(); if (pAttNode) pAttNode->Release(); return pEventElement; }