--- parser3/src/classes/xnode.C 2023/09/26 20:49:06 1.98 +++ parser3/src/classes/xnode.C 2024/09/13 04:01:22 1.100 @@ -21,7 +21,7 @@ #include "libxml/xpath.h" #include "libxml/xpathInternals.h" -volatile const char * IDENT_XNODE_C="$Id: xnode.C,v 1.98 2023/09/26 20:49:06 moko Exp $" IDENT_XNODE_H; +volatile const char * IDENT_XNODE_C="$Id: xnode.C,v 1.100 2024/09/13 04:01:22 moko Exp $" IDENT_XNODE_H; // classes @@ -95,12 +95,10 @@ private: xmlNode& as_node(MethodParams& params, int index, const char* msg) { Value& value=params.as_no_junction(index, msg); - if(Value* vxnode=value.as(VXNODE_TYPE)) - return static_cast(vxnode)->get_xmlnode(); + if(VXnode* vxnode=dynamic_cast(&value)) + return vxnode->get_xmlnode(); else - throw Exception(PARSER_RUNTIME, - 0, - msg); + throw Exception(PARSER_RUNTIME, 0, msg); } xmlChar* as_xmlchar(Request& r, MethodParams& params, int index, const char* msg) { @@ -233,7 +231,7 @@ struct AccumulateFoundInfo static void AccumulateFound(xmlNode& node, AccumulateFoundInfo* info) { info->hash->put( - String::Body::Format(info->index++), + pa_uitoa(info->index++), &info->vdoc->wrap(node)); } template static void @@ -725,9 +723,7 @@ static void selectNodesHandler(Request&, if(int size=res->nodesetval->nodeNr) { HashStringValue& hash=vhash.hash(); for(int i=0; inodesetval->nodeTab[i])); + hash.put(pa_uitoa(i), &xdoc.wrap(*res->nodesetval->nodeTab[i])); } break; default: