I have a function is this:
bool SetAttrib(CComQIPtr<IXMLDOMElement> &_elem, CString _AttribName,
CString _AttribValue)
{
ASSERT(_elem); // Check for valid
_AttribValue.TrimLeft();
_AttribValue.TrimRight();
try {
BSTR name;
name = _AttribName.AllocSysString();
VARIANT value;
value.vt = VT_BSTR;
value.bstrVal = _AttribValue.AllocSysString();
HRESULT hr = _elem->setAttribute(name, value);
::SysFreeString(name);
::SysFreeString(value.bstrVal);
value.vt = VT_EMPTY;
if (hr == S_OK)
return true;
}
catch (_com_error &e)
{
dump_com_error(e);
}
return false;
}
[quoted text, click to view] "Oleg Tkachenko [MVP]" wrote:
> Kevin Tang wrote:
>
> > I am using MS XML Parser 3.0, I want to know what will cause the
> > "setAttribute" fail in IXMLDOMElement ??
> >
> > My program is:
> > extern CComQIPtr<IXMLDOMElement> elem;
> > ASSERT(elem); // this is a valid element.
> > HRESULT hr = elem->setAttribute(name, value); // why it return S_FAIL ???
>
> That might be different reasons. Have you any additional information?
> What are name and value?
>
> --
> Oleg Tkachenko [XML MVP]
>
http://blog.tkachenko.com