msxml: Implement setAttribute.
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 38c3591..9f4ba3e 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -484,10 +484,39 @@
static HRESULT WINAPI domelem_setAttribute(
IXMLDOMElement *iface,
- BSTR p, VARIANT var)
+ BSTR name, VARIANT value)
{
- FIXME("\n");
- return E_NOTIMPL;
+ domelem *This = impl_from_IXMLDOMElement( iface );
+ xmlNodePtr element;
+ xmlChar *xml_name, *xml_value;
+ HRESULT hr;
+ VARIANT var;
+
+ TRACE("(%p)->(%s, var)\n", This, debugstr_w(name));
+
+ element = get_element( This );
+ if ( !element )
+ return E_FAIL;
+
+ VariantInit(&var);
+ hr = VariantChangeType(&var, &value, 0, VT_BSTR);
+ if(hr != S_OK)
+ {
+ FIXME("VariantChangeType failed\n");
+ return hr;
+ }
+
+ xml_name = xmlChar_from_wchar( name );
+ xml_value = xmlChar_from_wchar( V_BSTR(&var) );
+
+ if(!xmlSetNsProp(element, NULL, xml_name, xml_value))
+ hr = E_FAIL;
+
+ HeapFree(GetProcessHeap(), 0, xml_value);
+ HeapFree(GetProcessHeap(), 0, xml_name);
+ VariantClear(&var);
+
+ return hr;
}
static HRESULT WINAPI domelem_removeAttribute(