Alistair Leslie-Hughes : msxml3: Implement get_xml.

Alexandre Julliard julliard at winehq.org
Fri Jan 4 07:12:43 CST 2008


Module: wine
Branch: master
Commit: 11331847ac51f9cb8ff1a656fe0cda5e046ffef9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=11331847ac51f9cb8ff1a656fe0cda5e046ffef9

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Fri Jan  4 09:15:28 2008 +1100

msxml3: Implement get_xml.

---

 dlls/msxml3/node.c |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index c0fd27c..8b17589 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -685,8 +685,41 @@ static HRESULT WINAPI xmlnode_get_xml(
     IXMLDOMNode *iface,
     BSTR* xmlString)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    xmlnode *This = impl_from_IXMLDOMNode( iface );
+    xmlBufferPtr pXmlBuf;
+    int nSize;
+
+    TRACE("iface %p\n", iface);
+
+    if(!xmlString)
+        return E_INVALIDARG;
+
+    *xmlString = NULL;
+
+    pXmlBuf = xmlBufferCreate();
+    if(pXmlBuf)
+    {
+        nSize = xmlNodeDump(pXmlBuf, This->node->doc, This->node, 0, 0);
+        if(nSize > 0)
+        {
+            const xmlChar *pContent;
+
+            /* Attribute Nodes return a space infront of their name */
+            pContent = xmlBufferContent(pXmlBuf);
+            if( ((char*)pContent)[0] == ' ')
+                *xmlString = bstr_from_xmlChar(pContent+1);
+            else
+                *xmlString = bstr_from_xmlChar(pContent);
+
+
+            xmlBufferFree(pXmlBuf);
+        }
+    }
+
+    /* Always returns a string. */
+    if(*xmlString == NULL)  *xmlString = SysAllocStringLen( NULL, 0 );
+
+    return S_OK;
 }
 
 static HRESULT WINAPI xmlnode_transformNode(




More information about the wine-cvs mailing list