diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 491060572e2..b949037d921 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -1035,6 +1035,8 @@ inline HRESULT VARIANT_from_xmlChar(xmlChar *str, VARIANT *v, BSTR type) V_VT(v) = VT_CY; else if(!lstrcmpiW(type, szBoolean)) V_VT(v) = VT_BOOL; + else if(!lstrcmpiW(type, szI1)) + V_VT(v) = VT_I1; else { FIXME("Type handling not yet implemented\n"); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 7c8fddfbf4b..6e08ca9dd93 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -161,6 +161,7 @@ static const CHAR szTypeValueXML[] = " 3721-11-01\n" " \n" " 23:21:01.13+03:21\n" +" -13\n" ""; static const CHAR szBasicTransformSSXMLPart1[] = @@ -4159,6 +4160,19 @@ static void test_NodeTypeValue(void) IXMLDOMNode_Release(pNode); } + + hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_("root/i1"), &pNode); + ok(hr == S_OK, "ret %08x\n", hr ); + if(hr == S_OK) + { + hr = IXMLDOMNode_get_nodeTypedValue(pNode, &v); + ok(hr == S_OK, "ret %08x\n", hr ); + ok(V_VT(&v) == VT_I1, "incorrect type\n"); + ok(V_I1(&v) == -13, "incorrect value\n"); + VariantClear( &v ); + + IXMLDOMNode_Release(pNode); + } } IXMLDOMDocument2_Release(doc);