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);