Nikolay Sivov : msxml3: Implement ::get_responseXML().
Module: wine Branch: master Commit: 45db1d137670c88b712ad96c1ef639a830713871 URL: http://source.winehq.org/git/wine.git/?a=commit;h=45db1d137670c88b712ad96c1e... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sat Oct 9 01:42:44 2010 +0400 msxml3: Implement ::get_responseXML(). --- dlls/msxml3/httprequest.c | 27 ++++++++++++++++++++++++--- 1 files changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c index 3c2c049..504da92 100644 --- a/dlls/msxml3/httprequest.c +++ b/dlls/msxml3/httprequest.c @@ -766,13 +766,34 @@ static HRESULT WINAPI httprequest_get_statusText(IXMLHTTPRequest *iface, BSTR *p return E_NOTIMPL; } -static HRESULT WINAPI httprequest_get_responseXML(IXMLHTTPRequest *iface, IDispatch **ppBody) +static HRESULT WINAPI httprequest_get_responseXML(IXMLHTTPRequest *iface, IDispatch **body) { httprequest *This = impl_from_IXMLHTTPRequest( iface ); + IXMLDOMDocument3 *doc; + HRESULT hr; + BSTR str; - FIXME("stub %p %p\n", This, ppBody); + TRACE("(%p)->(%p)\n", This, body); - return E_NOTIMPL; + if (!body) return E_INVALIDARG; + if (This->state != READYSTATE_COMPLETE) return E_FAIL; + + hr = DOMDocument_create(&CLSID_DOMDocument, NULL, (void**)&doc); + if (hr != S_OK) return hr; + + hr = IXMLHTTPRequest_get_responseText(iface, &str); + if (hr == S_OK) + { + VARIANT_BOOL ok; + + hr = IXMLDOMDocument3_loadXML(doc, str, &ok); + SysFreeString(str); + } + + IXMLDOMDocument3_QueryInterface(doc, &IID_IDispatch, (void**)body); + IXMLDOMDocument3_Release(doc); + + return hr; } static HRESULT WINAPI httprequest_get_responseText(IXMLHTTPRequest *iface, BSTR *body)
participants (1)
-
Alexandre Julliard