/*************************************************************************************** * * IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. * * By downloading, copying, installing or using the software you agree to this license. * If you do not agree to this license, do not download, install, * copy or use the software. * * Copyright (C) 2014-2024, Happytimesoft Corporation, all rights reserved. * * Redistribution and use in binary forms, with or without modification, are permitted. * * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific * language governing permissions and limitations under the License. * ****************************************************************************************/ #ifndef XML_NODE_H #define XML_NODE_H /*************************************************************************************** * * XML node define * ***************************************************************************************/ #define NTYPE_TAG 0 #define NTYPE_ATTRIB 1 #define NTYPE_CDATA 2 #define NTYPE_LAST 2 #define NTYPE_UNDEF -1 typedef struct XMLN { int flag; // Is the buffer pointed to by data dynamically allocated memory? If so, it needs to be free const char * name; uint32 type; const char * data; int dlen; int finish; struct XMLN * parent; struct XMLN * f_child; struct XMLN * l_child; struct XMLN * prev; struct XMLN * next; struct XMLN * f_attrib; struct XMLN * l_attrib; } XMLN; #ifdef __cplusplus extern "C" { #endif /***************************************************************************************/ HT_API XMLN * xml_node_add(XMLN * parent, const char * name); HT_API void xml_node_del(XMLN * p_node); HT_API XMLN * xml_node_get(XMLN * parent, const char * name); HT_API int soap_strcmp(const char * str1, const char * str2); HT_API void soap_strncpy(char * dest, const char * src, int size); HT_API XMLN * xml_node_soap_get(XMLN * parent, const char * name); /***************************************************************************************/ HT_API XMLN * xml_attr_add(XMLN * p_node, const char * name, const char * value); HT_API void xml_attr_del(XMLN * p_node, const char * name); HT_API const char * xml_attr_get(XMLN * p_node, const char * name); HT_API XMLN * xml_attr_node_get(XMLN * p_node, const char * name); /***************************************************************************************/ HT_API void xml_cdata_set(XMLN * p_node, const char * value, int len); /***************************************************************************************/ HT_API int xml_calc_buf_len(XMLN * p_node); HT_API int xml_write_buf(XMLN * p_node, char * xml_buf, int buf_len); /***************************************************************************************/ HT_API XMLN * xxx_hxml_parse(char * p_xml, int len); #ifdef __cplusplus } #endif #endif // XML_NODE_H