diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 0f515c47622..f29315459a3 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -966,6 +966,8 @@ inline HRESULT VARIANT_from_xmlChar(xmlChar *str, VARIANT *v, BSTR type) V_VT(v) = VT_I4; else if(!lstrcmpiW(type, szFixed)) V_VT(v) = VT_CY; + else if(!lstrcmpiW(type, szBoolean)) + V_VT(v) = VT_BOOL; else { FIXME("Type handling not yet implemented\n"); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index cb8aa4e2fb3..8efbddd54f3 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -155,6 +155,7 @@ static const CHAR szTypeValueXML[] = " -3.71e3\n" " -13\n" " 7322.9371\n" +" 1\n" ""; static const CHAR szBasicTransformSSXMLPart1[] = @@ -4073,6 +4074,19 @@ static void test_NodeTypeValue(void) IXMLDOMNode_Release(pNode); } + + hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_("root/bool"), &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_BOOL, "incorrect type\n"); + ok(V_BOOL(&v) == VARIANT_TRUE, "incorrect value\n"); + VariantClear( &v ); + + IXMLDOMNode_Release(pNode); + } } IXMLDOMDocument2_Release(doc);