mirror of
https://github.com/reactos/wine.git
synced 2025-03-04 02:37:09 +00:00
xmllite/reader: Return prefixes from namespace stack.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
348fcb18af
commit
d3319f60ad
@ -3087,13 +3087,51 @@ static HRESULT WINAPI xmlreader_GetLocalName(IXmlReader* iface, LPCWSTR *name, U
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI xmlreader_GetPrefix(IXmlReader* iface, LPCWSTR *prefix, UINT *len)
|
static HRESULT WINAPI xmlreader_GetPrefix(IXmlReader* iface, const WCHAR **ret, UINT *len)
|
||||||
{
|
{
|
||||||
xmlreader *This = impl_from_IXmlReader(iface);
|
xmlreader *This = impl_from_IXmlReader(iface);
|
||||||
|
XmlNodeType nodetype;
|
||||||
|
UINT length;
|
||||||
|
|
||||||
|
TRACE("(%p)->(%p %p)\n", This, ret, len);
|
||||||
|
|
||||||
|
if (!len)
|
||||||
|
len = &length;
|
||||||
|
|
||||||
|
*ret = emptyW;
|
||||||
|
*len = 0;
|
||||||
|
|
||||||
|
switch ((nodetype = reader_get_nodetype(This)))
|
||||||
|
{
|
||||||
|
case XmlNodeType_Element:
|
||||||
|
case XmlNodeType_EndElement:
|
||||||
|
case XmlNodeType_Attribute:
|
||||||
|
{
|
||||||
|
const strval *prefix = &This->strvalues[StringValue_Prefix];
|
||||||
|
struct ns *ns;
|
||||||
|
|
||||||
|
if (strval_eq(This, prefix, &strval_xml))
|
||||||
|
{
|
||||||
|
*ret = xmlW;
|
||||||
|
*len = 3;
|
||||||
|
}
|
||||||
|
else if (strval_eq(This, prefix, &strval_xmlns))
|
||||||
|
{
|
||||||
|
*ret = xmlnsW;
|
||||||
|
*len = 5;
|
||||||
|
}
|
||||||
|
else if ((ns = reader_lookup_ns(This, prefix)))
|
||||||
|
{
|
||||||
|
*ret = ns->prefix.str;
|
||||||
|
*len = ns->prefix.len;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE("(%p)->(%p %p)\n", This, prefix, len);
|
|
||||||
*prefix = This->strvalues[StringValue_Prefix].str;
|
|
||||||
if (len) *len = This->strvalues[StringValue_Prefix].len;
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2024,6 +2024,7 @@ static void test_prefix(void)
|
|||||||
} prefix_tests[] =
|
} prefix_tests[] =
|
||||||
{
|
{
|
||||||
{ "<b xmlns=\"defns\" xml:a=\"a ns\"/>", "", "", "xml" },
|
{ "<b xmlns=\"defns\" xml:a=\"a ns\"/>", "", "", "xml" },
|
||||||
|
{ "<c:b xmlns:c=\"c ns\" xml:a=\"a ns\"/>", "c", "xmlns", "xml" },
|
||||||
};
|
};
|
||||||
IXmlReader *reader;
|
IXmlReader *reader;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user