//设置指定xpath的节点值 BOOL CXmlBase::SetNodeValue(LPCTSTR lpszValue, MSXML2::IXMLDOMNodePtr pNode) { if (pNode == NULL) return FALSE; if (lpszValue == NULL) return FALSE; MSXML2::IXMLDOMElementPtr pElem = pNode; pElem->Puttext(lpszValue); return TRUE; }
/****************************************************************************** Function Name : SaveFileAs Input(s) : CString omFilePath Output : HRESULT Functionality : Member of : CTestSetupEntity Friend of : - Author(s) : Venkatanarayana Makam Date Created : 06/04/2011 Modifications : Codetag : CS006 ******************************************************************************/ HRESULT CTestSetupEntity::SaveFileAs(CString omFilePath) { if(omFilePath.IsEmpty() == TRUE) { return S_FALSE; } MSXML2::IXMLDOMDocumentPtr pIDOMDoc; HRESULT hr = pIDOMDoc.CreateInstance(L"Msxml2.DOMDocument"); if ( FAILED(hr) ) { return S_FALSE; } MSXML2::IXMLDOMProcessingInstructionPtr pIDomPi; pIDomPi = pIDOMDoc->createProcessingInstruction(def_DOM_INSTRUCTION); VARIANT_BOOL b = TRUE; pIDOMDoc->put_preserveWhiteSpace(b); if (pIDomPi != nullptr) { pIDOMDoc->appendChild(pIDomPi); } //testSETUP Node <testsetup> MSXML2::IXMLDOMElementPtr pIDomTSNode = pIDOMDoc->createElement(_bstr_t(def_STR_TSNODE_NAME)); pIDOMDoc->appendChild(pIDomTSNode); //Title Attribute <testsetup title = ""> MSXML2::IXMLDOMAttributePtr pIDomTSAtrrib = pIDOMDoc->createAttribute(def_STR_TSATTRIB_TITLE); if(pIDomTSAtrrib!= nullptr) { pIDomTSAtrrib->value = _bstr_t(m_omstrTestSetupTitle); pIDomTSNode->setAttributeNode(pIDomTSAtrrib); } //Descriprion Node <testsetup title = ""><description> MSXML2::IXMLDOMElementPtr pIDomDescriptionNode = pIDOMDoc->createElement(_bstr_t(def_STR_DESC_NODE)); pIDomDescriptionNode->Puttext(_bstr_t(m_omstrDescription)); pIDomTSNode->appendChild(pIDomDescriptionNode); //Heade Node MSXML2::IXMLDOMElementPtr pIDomHeaderNode = pIDOMDoc->createElement(_bstr_t(def_STR_HEADER_NAME)); nSaveHeader(pIDomHeaderNode, omFilePath); pIDomTSNode->appendChild(pIDomHeaderNode); //TestCase List MSXML2::IXMLDOMElementPtr pIDomTestCaseNode = pIDOMDoc->createElement(_bstr_t(def_STR_TCLIST_NODE)); SetData(pIDomTestCaseNode); pIDomTSNode->appendChild(pIDomTestCaseNode); FormatDOMDocument(pIDOMDoc, omFilePath); return S_OK; }
/****************************************************************************** Function Name : SetData Input(s) : MSXML2::IXMLDOMElementPtr& pIDomTestCaseNode Output : HRESULT Functionality : Member of : CReplayEntity Friend of : - Author(s) : Venkatanarayana Makam Date Created : 06/04/2011 Modifications : ******************************************************************************/ HRESULT CReplayEntity::SetData(MSXML2::IXMLDOMElementPtr& pIDomTestCaseNode) { CString omstrTemp; MSXML2::IXMLDOMDocumentPtr pIDOMDoc; pIDOMDoc.CreateInstance(L"Msxml2.DOMDocument"); if (pIDOMDoc != NULL) { MSXML2::IXMLDOMElementPtr pIDomWaitNode = pIDOMDoc->createElement(_bstr_t(def_STR_REPLAY_NODE)); pIDomWaitNode->Puttext(_bstr_t(m_omFilePath)); pIDomTestCaseNode->appendChild(pIDomWaitNode); } return S_OK; }
/****************************************************************************** Function Name : bAddChildToNode Input(s) : MSXML2::IXMLDOMElementPtr& pNodeElement, CString omNodeName CString omNodeval Output : BOOL Functionality : Member of : CTestSetupEntity Friend of : - Author(s) : Venkatanarayana Makam Date Created : 06/04/2011 Modifications : ******************************************************************************/ BOOL CTestSetupEntity::bAddChildToNode(MSXML2::IXMLDOMElementPtr& pNodeElement, CString omNodeName, CString omNodeval) { BOOL bReturn = FALSE; MSXML2::IXMLDOMElementPtr pChildElement; MSXML2::IXMLDOMDocumentPtr m_pXMLDom; m_pXMLDom.CreateInstance(L"Msxml2.DOMDocument"); if (pNodeElement != NULL) { pChildElement = m_pXMLDom->createElement(_bstr_t(omNodeName)); if (pChildElement != NULL) { pChildElement->Puttext((_bstr_t)omNodeval); pNodeElement->appendChild(pChildElement); bReturn = TRUE; } } return bReturn; }
/****************************************************************************** Function Name : SetData Input(s) : MSXML2::IXMLDOMElementPtr& pIDomTestCaseNode Output : HRESULT Functionality : Member of : CWaitEntity Friend of : - Author(s) : Venkatanarayana Makam Date Created : 06/04/2011 Modifications : ******************************************************************************/ HRESULT CWaitEntity::SetData(MSXML2::IXMLDOMElementPtr& pIDomTestCaseNode) { CString omstrTemp; MSXML2::IXMLDOMDocumentPtr pIDOMDoc; pIDOMDoc.CreateInstance(L"Msxml2.DOMDocument"); if (pIDOMDoc != NULL) { MSXML2::IXMLDOMElementPtr pIDomWaitNode = pIDOMDoc->createElement(_bstr_t(def_STR_WAIT_NODE)); MSXML2::IXMLDOMAttributePtr pIDomTSAtrrib = pIDOMDoc->createAttribute(def_STR_STTRIB_PURPOSE); if(pIDomTSAtrrib!= NULL) { pIDomTSAtrrib->value = _bstr_t(m_ouData.m_omPurpose); pIDomWaitNode->setAttributeNode(pIDomTSAtrrib); } omstrTemp.Format("%d", m_ouData.m_ushDuration); pIDomWaitNode->Puttext(_bstr_t(omstrTemp)); pIDomTestCaseNode->appendChild(pIDomWaitNode); } return S_OK; }
/****************************************************************************** Function Name : nSaveHeader Input(s) : Output : INT Functionality : Member of : CTestSetupEntity Friend of : - Author(s) : Venkatanarayana Makam Date Created : 06/04/2011 Modifications : Codetag : CS025 ******************************************************************************/ INT CTestSetupEntity::nSaveHeader(MSXML2::IXMLDOMElementPtr& pIDomHeaderNode, CString& omStrFilePath) { MSXML2::IXMLDOMDocumentPtr pIDOMDoc; pIDOMDoc.CreateInstance(L"Msxml2.DOMDocument"); MSXML2::IXMLDOMElementPtr pChildElement; MSXML2::IXMLDOMElementPtr pInfoElement; CString omstrTemp; //Module Info pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_INFO_NODE)); if (pInfoElement != NULL) { bAddChildToNode(pInfoElement, def_STR_CATEGORY_NODE, m_ouTestSetupHeader.m_sModuleName.m_omCategory); bAddChildToNode(pInfoElement, def_STR_VALUE_NODE, m_ouTestSetupHeader.m_sModuleName.m_omValue); } pIDomHeaderNode->appendChild(pInfoElement); //Version pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_INFO_NODE)); if (pInfoElement != NULL) { bAddChildToNode(pInfoElement, def_STR_CATEGORY_NODE, m_ouTestSetupHeader.m_sVersion.m_omCategory); bAddChildToNode(pInfoElement, def_STR_VALUE_NODE, m_ouTestSetupHeader.m_sVersion.m_omValue); } pIDomHeaderNode->appendChild(pInfoElement); //Engineer Name pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_INFO_NODE)); if (pInfoElement != NULL) { bAddChildToNode(pInfoElement, def_STR_CATEGORY_NODE, m_ouTestSetupHeader.m_sEngineerInfo1.m_omCategory); bAddChildToNode(pInfoElement, def_STR_VALUE_NODE, m_ouTestSetupHeader.m_sEngineerInfo1.m_omValue); } pIDomHeaderNode->appendChild(pInfoElement); //Engineer Role pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_INFO_NODE)); if (pInfoElement != NULL) { bAddChildToNode(pInfoElement, def_STR_CATEGORY_NODE, m_ouTestSetupHeader.m_sEngineerInfo2.m_omCategory); bAddChildToNode(pInfoElement, def_STR_VALUE_NODE, m_ouTestSetupHeader.m_sEngineerInfo2.m_omValue); } pIDomHeaderNode->appendChild(pInfoElement); //Bus Type pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_DBPATH_NODE)); bAddChildToNode(pInfoElement, def_STR_DATABASE, m_ouTestSetupHeader.m_omDatabasePath); pIDomHeaderNode->appendChild(pInfoElement); //Database Path pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_BUS_TYPE)); if(m_ouTestSetupHeader.m_eBus == CAN) { omstrTemp = "CAN"; } pInfoElement->Puttext(_bstr_t(omstrTemp)); pIDomHeaderNode->appendChild(pInfoElement); //Report File pInfoElement = pIDOMDoc->createElement(_bstr_t(def_STR_REPORT_NODE)); if (pInfoElement != NULL) { switch(m_ouTestSetupHeader.m_sReportFile.m_eType) { case HTM: omstrTemp = "HTM"; break; case TXT: default: omstrTemp = "TXT"; break; }; if(m_ouTestSetupHeader.m_sReportFile.m_omPath == "") { CString omReportPath(omStrFilePath); int nIndex = omReportPath.Find(".xml"); omReportPath.Delete(nIndex, 4); CFile omFile(omStrFilePath, CFile::modeRead); CString omReportName = omFile.GetFileTitle() + _T(".") + omstrTemp; omReportPath += omReportName; m_ouTestSetupHeader.m_sReportFile.m_omPath = omReportPath; } //Report Path bAddChildToNode(pInfoElement, def_STR_PATH_NODE, m_ouTestSetupHeader.m_sReportFile.m_omPath); //Extension bAddChildToNode(pInfoElement, def_STR_FORMAT_NODE, omstrTemp); switch(m_ouTestSetupHeader.m_sReportFile.m_eType) { case ABS: omstrTemp = "ABS"; break; case REL: default: omstrTemp = "REL"; break; } //Time bAddChildToNode(pInfoElement, def_STR_TIMEMODE_NODE, omstrTemp); } pIDomHeaderNode->appendChild(pInfoElement); return 0; }