PreviousNextIndex

NODE-VALUE-TO-MEMPTR( ) method

Copies the contents of an XML X-noderef node to a MEMPTR. This makes it easier to manipulate when its length exceeds the ABL limit for text strings, which is approximately 32K.

Return type: LOGICAL

Applies to: X-noderef object handle

Syntax
NODE-VALUE-TO-MEMPTR( memptr ) 

memptr

NODE-VALUE-TO-MEMPTR( ) frees the memory currently allocated by memptr (if any), allocates sufficient memory to the MEMPTR to accommodate the node, and copies the node to the MEMPTR.

If X-NODEREF:NODE-VALUE is “” (the empty string), the resulting memptr has a size of zero.

Note: When you no longer need the memory used by memptr, you must free it yourself. To do so, use the SET-SIZE statement.

The following fragment uses NODE-VALUE-TO-MEMPTR( ) to access a large text node in chunks:

IF my-xnoderef:SUBTYPE = "#TEXT" THEN DO: 
  IF LENGTH(my-xnoderef:NODE-VALUE, "RAW") > 32000 THEN DO: 
    ASSIGN 
      succes = my-xnoderef:NODE-VALUE-TO-MEMPTR(my-memptr) 
      pos    = 1 
      len    = 32000. 
    DO WHILE pos < GET-SIZE(my-memptr): 
      my-nodeval = GET-STRING(my-memptr, pos, len). 
      /* Do something with my-nodeval */ 
      pos = pos + len. 
    END. 
    SET-SIZE(my-memptr) = 0. 
  END. 
  ELSE 
    my-nodeval = my-xnoderef:NODE-VALUE. 
END. 

For more information on accessing XML documents using the Document Object Model (DOM) interface, see OpenEdge Development: Working with XML.


OpenEdge Release 10.2B
Copyright © 2009 Progress Software Corporation
PreviousNextIndex