Ejemplo n.º 1
0
///////////////////////////////////////////////////////
// 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;
}
Ejemplo n.º 2
0
/*
	Function name	: CXML::CreateAttributeNode
	Description	    : 
	Return type		: bool 
	Argument        : IXMLDOMNode **pParentNode
	Argument        : CString csAttribute
	Argument        : CString csValue
	Tested			: Ok
*/
bool CXML::CreateAttributeNode(IXMLDOMNode **pParentNode,CString csAttribute,CString csValue)
{
	IXMLDOMNode * pNode = NULL;
	if(csAttribute.IsEmpty())
		return false;

	if(!(*pParentNode))
		return false;

	_variant_t vtNodeType((long)NODE_ATTRIBUTE);

	_bstr_t bstrName(csAttribute);
	_bstr_t bstrNameSpace("");

	m_hr = m_pXMLDoc->createNode(vtNodeType,bstrName,bstrNameSpace,&pNode);
	if(!SUCCEEDED(m_hr))
		return false;

	IXMLDOMNamedNodeMap * pAttributes = NULL;
	m_hr = (*pParentNode)->get_attributes(&pAttributes);
	
	if(!SUCCEEDED(m_hr) || !pAttributes)
	{
		pNode->Release();
		return false;
	}

	IXMLDOMNode *pNewNode = NULL;
	m_hr = pAttributes->setNamedItem(pNode,&pNewNode);

	pNode->Release();
	pAttributes->Release();
	if(!SUCCEEDED(m_hr) || !pNewNode)
		return false;

	
	_variant_t vtValue(csValue);
	m_hr =	pNewNode->put_nodeValue(vtValue);

	pNewNode->Release();
	if(!SUCCEEDED(m_hr) || !pNewNode)
		return false;

	return true;
}