Commit d2ecd869 authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

webservices: Implement WS_MOVE_TO_ROOT_ELEMENT in the reader.

parent fe65b87d
...@@ -1319,6 +1319,31 @@ HRESULT WINAPI WsReadToStartElement( WS_XML_READER *handle, const WS_XML_STRING ...@@ -1319,6 +1319,31 @@ HRESULT WINAPI WsReadToStartElement( WS_XML_READER *handle, const WS_XML_STRING
return read_to_startelement( reader, found ); return read_to_startelement( reader, found );
} }
static BOOL move_to_root_element( struct reader *reader )
{
struct list *ptr;
struct node *node;
if (!(ptr = list_head( &reader->root->children ))) return FALSE;
node = LIST_ENTRY( ptr, struct node, entry );
if (node->hdr.node.nodeType == WS_XML_NODE_TYPE_ELEMENT)
{
reader->current = node;
return TRUE;
}
while ((ptr = list_next( &reader->root->children, &node->entry )))
{
struct node *next = LIST_ENTRY( ptr, struct node, entry );
if (next->hdr.node.nodeType == WS_XML_NODE_TYPE_ELEMENT)
{
reader->current = next;
return TRUE;
}
node = next;
}
return FALSE;
}
static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found ) static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found )
{ {
struct list *ptr; struct list *ptr;
...@@ -1332,6 +1357,10 @@ static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found ...@@ -1332,6 +1357,10 @@ static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found
} }
switch (move) switch (move)
{ {
case WS_MOVE_TO_ROOT_ELEMENT:
success = move_to_root_element( reader );
break;
case WS_MOVE_TO_FIRST_NODE: case WS_MOVE_TO_FIRST_NODE:
if ((ptr = list_head( &reader->current->parent->children ))) if ((ptr = list_head( &reader->current->parent->children )))
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment