Nikolay Sivov : msxml3/schema: Support element nodes in add().

Alexandre Julliard julliard at winehq.org
Wed Jun 1 10:45:45 CDT 2016


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Jun  1 14:33:20 2016 +0300

msxml3/schema: Support element nodes in add().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msxml3/schema.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index f92130a..30272cb 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -1247,7 +1247,30 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
                 IUnknown_QueryInterface(V_UNKNOWN(&var), &IID_IXMLDOMNode, (void**)&domnode);
 
                 if (domnode)
-                    doc = xmlNodePtr_from_domnode(domnode, XML_DOCUMENT_NODE)->doc;
+                {
+                    DOMNodeType type;
+
+                    IXMLDOMNode_get_nodeType(domnode, &type);
+                    switch (type)
+                    {
+                    case NODE_ELEMENT:
+                    {
+                        IXMLDOMDocument *domdoc;
+                        VARIANT_BOOL b;
+                        BSTR xml;
+
+                        IXMLDOMNode_get_xml(domnode, &xml);
+                        DOMDocument_create(This->version, (void**)&domdoc);
+                        IXMLDOMDocument_loadXML(domdoc, xml, &b);
+                        SysFreeString(xml);
+                        doc = xmlNodePtr_from_domnode((IXMLDOMNode*)domdoc, XML_DOCUMENT_NODE)->doc;
+                        break;
+                    }
+                    default:
+                        doc = xmlNodePtr_from_domnode(domnode, XML_DOCUMENT_NODE)->doc;
+                        break;
+                    }
+                }
 
                 if (!doc)
                 {




More information about the wine-cvs mailing list