|
|
| version 1.95, 2016/11/01 23:10:41 | version 1.104, 2026/09/20 00:27:40 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: @b dom parser class. | Parser: @b dom parser class. |
| Copyright (c) 2001-2015 Art. Lebedev Studio (http://www.artlebedev.com) | Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru> |
| */ | */ |
| #include "classes.h" | #include "classes.h" |
| #ifdef XML | #ifdef XML |
| Line 95 private: | Line 95 private: |
| xmlNode& as_node(MethodParams& params, int index, const char* msg) { | xmlNode& as_node(MethodParams& params, int index, const char* msg) { |
| Value& value=params.as_no_junction(index, msg); | Value& value=params.as_no_junction(index, msg); |
| if(Value* vxnode=value.as(VXNODE_TYPE)) | if(VXnode* vxnode=dynamic_cast<VXnode*>(&value)) |
| return static_cast<VXnode*>(vxnode)->get_xmlnode(); | return vxnode->get_xmlnode(); |
| else | else |
| throw Exception(PARSER_RUNTIME, | throw Exception(PARSER_RUNTIME, 0, msg); |
| 0, | |
| msg); | |
| } | } |
| xmlChar* as_xmlchar(Request& r, MethodParams& params, int index, const char* msg) { | xmlChar* as_xmlchar(Request& r, MethodParams& params, int index, const char* msg) { |
| Line 232 struct AccumulateFoundInfo | Line 230 struct AccumulateFoundInfo |
| #endif | #endif |
| static void AccumulateFound(xmlNode& node, AccumulateFoundInfo* info) | static void AccumulateFound(xmlNode& node, AccumulateFoundInfo* info) |
| { | { |
| info->hash->put( | info->hash->put(String::Body::uitoa(info->index++), &info->vdoc->wrap(node)); |
| String::Body::Format(info->index++), | |
| &info->vdoc->wrap(node)); | |
| } | } |
| template<typename I> static void | template<typename I> static void |
| pa_xmlNamedPreorderTraversal ( | pa_xmlNamedPreorderTraversal ( |
| Line 725 static void selectNodesHandler(Request&, | Line 721 static void selectNodesHandler(Request&, |
| if(int size=res->nodesetval->nodeNr) { | if(int size=res->nodesetval->nodeNr) { |
| HashStringValue& hash=vhash.hash(); | HashStringValue& hash=vhash.hash(); |
| for(int i=0; i<size; i++) | for(int i=0; i<size; i++) |
| hash.put( | hash.put(String::Body::uitoa(i), &xdoc.wrap(*res->nodesetval->nodeTab[i])); |
| String::Body::Format(i), | |
| &xdoc.wrap(*res->nodesetval->nodeTab[i])); | |
| } | } |
| break; | break; |
| default: | default: |
| Line 937 MXnode::MXnode(const char* aname): Metho | Line 931 MXnode::MXnode(const char* aname): Metho |
| // consts | // consts |
| #define CONST(name) consts.put(#name, new VInt(XML_##name)) | #define PA_CONST(name) consts.put(#name, new VInt(XML_##name)) |
| #define CONST2(name, value) consts.put(#name, new VInt(value)) | #define PA_CONST2(name, value) consts.put(#name, new VInt(value)) |
| CONST(ELEMENT_NODE); | PA_CONST(ELEMENT_NODE); |
| CONST(ATTRIBUTE_NODE); | PA_CONST(ATTRIBUTE_NODE); |
| CONST(TEXT_NODE); | PA_CONST(TEXT_NODE); |
| CONST(CDATA_SECTION_NODE); | PA_CONST(CDATA_SECTION_NODE); |
| CONST2(ENTITY_REFERENCE_NODE, XML_ENTITY_REF_NODE); | PA_CONST2(ENTITY_REFERENCE_NODE, XML_ENTITY_REF_NODE); |
| CONST(ENTITY_NODE); | PA_CONST(ENTITY_NODE); |
| CONST2(PROCESSING_INSTRUCTION_NODE, XML_PI_NODE); | PA_CONST2(PROCESSING_INSTRUCTION_NODE, XML_PI_NODE); |
| CONST(COMMENT_NODE); | PA_CONST(COMMENT_NODE); |
| CONST(DOCUMENT_NODE); | PA_CONST(DOCUMENT_NODE); |
| CONST(DOCUMENT_TYPE_NODE); | PA_CONST(DOCUMENT_TYPE_NODE); |
| CONST2(DOCUMENT_FRAGMENT_NODE, XML_DOCUMENT_FRAG_NODE); | PA_CONST2(DOCUMENT_FRAGMENT_NODE, XML_DOCUMENT_FRAG_NODE); |
| CONST(NOTATION_NODE); | PA_CONST(NOTATION_NODE); |
| } | } |
| #endif | #endif |