BOOL CAddItem::AddAttribute(MSXML2::IXMLDOMNodePtr item, LPCTSTR tstrAttributeName, LPCTSTR tstrAttributeText) { BOOL bResult = FALSE; MSXML2::IXMLDOMNodePtr attribute = docPtr->createAttribute(tstrAttributeName); if(attribute != NULL) { _variant_t varText(tstrAttributeText); hr = attribute->put_nodeValue(varText); if(SUCCEEDED(hr)) { hr = item->attributes->setNamedItem(attribute); bResult = SUCCEEDED(hr); } } return bResult; }
//设置指定xpath的节点属性 BOOL CXmlBase::SetAttrValue(LPCTSTR lpszValue, LPCTSTR lpszAttrName, MSXML2::IXMLDOMNodePtr pNode) { if (lpszValue == NULL || lpszAttrName == NULL || pNode == NULL) return FALSE; MSXML2::IXMLDOMElementPtr pElem = pNode; //lc,国际化乱码问题 // CComVariant varText(_bstr_t(lpszValue).GetBSTR()); // HRESULT hr = pElem->setAttribute(_bstr_t(lpszAttrName).GetBSTR(), varText); BSTR bstr = SysAllocString(_bstr_t(lpszValue).GetBSTR()); //modify memory leak CComVariant varText(bstr); BSTR bstrName =SysAllocString(_bstr_t(lpszAttrName).GetBSTR()); HRESULT hr = pElem->setAttribute(bstrName, varText); SysFreeString(bstr); bstr = NULL; SysFreeString(bstrName); bstrName = NULL; if (FAILED(hr)) return FALSE; return TRUE; }