2019-07-28 10:31:56 +08:00
# ifndef ACL_XML_INCLUDE_H
2014-11-19 00:25:21 +08:00
# define ACL_XML_INCLUDE_H
# ifdef __cplusplus
extern " C " {
# endif
2017-06-02 14:47:24 +08:00
# include "../stdlib/acl_array.h"
# include "../stdlib/acl_ring.h"
# include "../stdlib/acl_vstream.h"
# include "../stdlib/acl_htable.h"
# include "../stdlib/acl_vstring.h"
# include "../stdlib/acl_iterator.h"
# include "../stdlib/acl_dbuf_pool.h"
2014-11-19 00:25:21 +08:00
typedef struct ACL_XML ACL_XML ;
typedef struct ACL_XML_NODE ACL_XML_NODE ;
typedef struct ACL_XML_ATTR ACL_XML_ATTR ;
struct ACL_XML_ATTR {
2019-07-28 10:31:56 +08:00
ACL_XML_NODE * node ; /**< <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ڵ<EFBFBD> */
ACL_VSTRING * name ; /**< <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
ACL_VSTRING * value ; /**< <20> <> <EFBFBD> <EFBFBD> ֵ */
2014-11-19 00:25:21 +08:00
/* private */
2019-07-28 10:31:56 +08:00
int quote ; /**< <20> <> 0 <20> <> ʾ ' <20> <> " */
int backslash ; /**< ת<> <D7AA> <EFBFBD> ַ<EFBFBD> \ */
int slash ; /**< <20> Ƿ<EFBFBD> <C7B7> <EFBFBD> '/' <20> <> ־λ<D6BE> 趨 */
2014-11-19 00:25:21 +08:00
} ;
struct ACL_XML_NODE {
2019-07-28 10:31:56 +08:00
ACL_VSTRING * ltag ; /**< <20> <> <EFBFBD> <EFBFBD> ǩ<EFBFBD> <C7A9> */
ACL_VSTRING * rtag ; /**< <20> ұ<EFBFBD> ǩ<EFBFBD> <C7A9> */
const ACL_VSTRING * id ; /**< ID<49> <44> ʶ<EFBFBD> <CAB6> , ֻ<> <D6BB> xml->id_table
<EFBFBD> <EFBFBD> <EFBFBD> ڵ Ľ ڵ <EFBFBD> <EFBFBD> <EFBFBD> id <EFBFBD> ŷ ǿ <EFBFBD> */
ACL_VSTRING * text ; /**< <20> ı <EFBFBD> <C4B1> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> */
ACL_ARRAY * attr_list ; /**< <20> <> <EFBFBD> <EFBFBD> (ACL_XML_ATTR)<29> б <EFBFBD> */
ACL_XML_NODE * parent ; /**< <20> <> <EFBFBD> ڵ<EFBFBD> */
ACL_RING children ; /**< <20> ӽڵ㼯<DAB5> <E3BCAF> */
int depth ; /**< <20> <> ǰ<EFBFBD> ڵ<EFBFBD> <DAB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
/* private */
2019-07-28 10:31:56 +08:00
ACL_XML * xml ; /**< xml <20> <> <EFBFBD> <EFBFBD> */
ACL_RING node ; /**< <20> <> ǰ<EFBFBD> ڵ<EFBFBD> */
ACL_XML_ATTR * curr_attr ; /**< <20> <> ǰ<EFBFBD> <C7B0> <EFBFBD> ڽ<EFBFBD> <DABD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
int quote ; /**< <20> <> 0 <20> <> ʾ ' <20> <> " */
int last_ch ; /**< <20> <> <EFBFBD> <EFBFBD> ¼<EFBFBD> <C2BC> <EFBFBD> ڵ<EFBFBD> <DAB5> <EFBFBD> ǰһ <C7B0> <D2BB> <EFBFBD> ֽ<EFBFBD> ֵ */
int nlt ; /**< '<' <20> <> <EFBFBD> <EFBFBD> */
char meta [ 3 ] ; /**< Ԫ<> <D4AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
unsigned int flag ;
# define ACL_XML_F_META_QM (1 << 0) /**< '?' flag */
# define ACL_XML_F_META_CM (1 << 1) /**< '!--' flag */
# define ACL_XML_F_META_EM (1 << 2) /**< only '!' flag */
# define ACL_XML_F_SELF_CL (1 << 3) /**< self closed flag */
# define ACL_XML_F_LEAF (1 << 4) /**< leaf node has no child node */
2015-12-12 23:00:03 +08:00
# define ACL_XML_F_CDATA (1 << 5) /**< CDATA data */
2014-11-19 00:25:21 +08:00
2019-07-28 10:31:56 +08:00
/**< <20> Ƿ<EFBFBD> <C7B7> <EFBFBD> Ԫ<EFBFBD> <D4AA> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
# define ACL_XML_F_META \
( ACL_XML_F_META_QM | ACL_XML_F_META_CM | ACL_XML_F_META_EM )
2015-11-20 23:29:10 +08:00
# define ACL_XML_IS_COMMENT(x) (((x)->flag & ACL_XML_F_META_CM))
2015-12-12 23:00:03 +08:00
# define ACL_XML_IS_CDATA(x) (((x)->flag & ACL_XML_F_CDATA))
2019-07-28 10:31:56 +08:00
int status ; /**< ״̬<D7B4> <CCAC> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> ״̬ */
# define ACL_XML_S_NXT 0 /**< <20> <> һ <EFBFBD> <D2BB> <EFBFBD> ڵ<EFBFBD> */
# define ACL_XML_S_LLT 1 /**< <20> <> <EFBFBD> <EFBFBD> '<' */
# define ACL_XML_S_LGT 2 /**< <20> ұ<EFBFBD> '>' */
# define ACL_XML_S_LCH 3 /**< <20> <> <EFBFBD> <EFBFBD> '<' <20> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> ֽ<EFBFBD> */
# define ACL_XML_S_LEM 4 /**< <20> <> <EFBFBD> <EFBFBD> '<' <20> <> <EFBFBD> <EFBFBD> '!' */
# define ACL_XML_S_LTAG 5 /**< <20> <> <EFBFBD> ߵ ı <DFB5> ǩ<EFBFBD> <C7A9> */
# define ACL_XML_S_RLT 6 /**< <20> ұߵ <D2B1> '<' */
# define ACL_XML_S_RGT 7 /**< <20> ұߵ <D2B1> '>' */
# define ACL_XML_S_RTAG 8 /**< <20> ұߵ ı <DFB5> ǩ<EFBFBD> <C7A9> */
# define ACL_XML_S_ATTR 9 /**< <20> <> ǩ<EFBFBD> <C7A9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
# define ACL_XML_S_AVAL 10 /**< <20> <> ǩ<EFBFBD> <C7A9> <EFBFBD> <EFBFBD> ֵ */
# define ACL_XML_S_TXT 11 /**< <20> ڵ<EFBFBD> <DAB5> ı <EFBFBD> */
# define ACL_XML_S_MTAG 12 /**< Ԫ<> <D4AA> <EFBFBD> ݱ<EFBFBD> ǩ */
# define ACL_XML_S_MTXT 13 /**< Ԫ<> <D4AA> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> */
# define ACL_XML_S_MCMT 14 /**< Ԫ<> <D4AA> <EFBFBD> <EFBFBD> ע<EFBFBD> <D7A2> */
# define ACL_XML_S_MEND 15 /**< Ԫ<> <D4AA> <EFBFBD> ݽ<EFBFBD> <DDBD> <EFBFBD> */
# define ACL_XML_S_CDATA 16 /**< CDATA <20> <> <EFBFBD> <EFBFBD> */
/* public: for acl_iterator, ͨ<> <CDA8> acl_foreach <20> г <EFBFBD> <D0B3> ýڵ<C3BD> <DAB5> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> ӽڵ<D3BD> */
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_head ) ( ACL_ITER * , ACL_XML_NODE * ) ;
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_next ) ( ACL_ITER * , ACL_XML_NODE * ) ;
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> β<EFBFBD> <CEB2> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_tail ) ( ACL_ITER * , ACL_XML_NODE * ) ;
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_prev ) ( ACL_ITER * , ACL_XML_NODE * ) ;
} ;
struct ACL_XML {
/* public */
2019-07-28 10:31:56 +08:00
int depth ; /**< <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
int node_cnt ; /**< <20> ڵ<EFBFBD> <DAB5> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> root <20> ڵ<EFBFBD> */
int root_cnt ; /**< <20> <> <EFBFBD> ڵ<EFBFBD> <DAB5> <EFBFBD> <EFBFBD> <EFBFBD> */
int attr_cnt ; /**< <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
ACL_XML_NODE * root ; /**< XML <20> <> <EFBFBD> ڵ<EFBFBD> */
2014-11-19 00:25:21 +08:00
/* private */
2019-07-28 10:31:56 +08:00
ACL_HTABLE * id_table ; /**< id <20> <> ʶ<EFBFBD> <CAB6> <EFBFBD> <EFBFBD> ϣ<EFBFBD> <CFA3> */
ACL_XML_NODE * curr_node ; /**< <20> <> ǰ<EFBFBD> <C7B0> <EFBFBD> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> <EFBFBD> XML <20> ڵ<EFBFBD> */
ACL_DBUF_POOL * dbuf ; /**< <20> ڴ<EFBFBD> <DAB4> ض<EFBFBD> <D8B6> <EFBFBD> */
ACL_DBUF_POOL * dbuf_inner ; /**< <20> ڲ<EFBFBD> <DAB2> ֲ<EFBFBD> <D6B2> <EFBFBD> <EFBFBD> ڴ<EFBFBD> <DAB4> ض<EFBFBD> <D8B6> <EFBFBD> */
size_t dbuf_keep ; /**< <20> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> ij<EFBFBD> <C4B3> <EFBFBD> */
size_t space ; /**< <20> ڴ<EFBFBD> <DAB4> <EFBFBD> xml <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> ѷ<EFBFBD> <D1B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ<EFBFBD> <DAB4> <EFBFBD> С */
2014-11-19 00:25:21 +08:00
2019-07-28 10:31:56 +08:00
unsigned flag ; /**< <20> <> ־λ: ACL_XML_FLAG_xxx */
2015-11-20 23:29:10 +08:00
2019-07-28 10:31:56 +08:00
/**< <20> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> xml <20> ĵ<EFBFBD> <C4B5> <EFBFBD> <EFBFBD> ж<EFBFBD> <D0B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ㣬<DAB5> ڲ<EFBFBD> ȱʡΪ<CAA1> <CEAA> <EFBFBD> <EFBFBD> */
2017-06-05 12:21:02 +08:00
# define ACL_XML_FLAG_MULTI_ROOT (1 << 0)
2015-11-20 23:29:10 +08:00
2019-07-28 10:31:56 +08:00
/**< <20> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> ݵ<EFBFBD> <DDB5> ڵ<EFBFBD> <DAB5> <EFBFBD> û<EFBFBD> <C3BB> '/' <20> <> <EFBFBD> <EFBFBD> */
2015-11-20 23:29:10 +08:00
# define ACL_XML_FLAG_IGNORE_SLASH (1 << 1)
2019-07-28 10:31:56 +08:00
/**< <20> Ƿ<EFBFBD> <C7B7> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> ı <EFBFBD> <C4B1> <EFBFBD> <EFBFBD> ݽ<EFBFBD> <DDBD> <EFBFBD> xml <20> <> <EFBFBD> <EFBFBD> */
2015-11-20 23:29:10 +08:00
# define ACL_XML_FLAG_XML_DECODE (1 << 2)
2016-02-25 19:57:02 +08:00
2019-07-28 10:31:56 +08:00
/**< <20> <> <EFBFBD> <EFBFBD> xml <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> <EFBFBD> ݽ<EFBFBD> <DDBD> <EFBFBD> xml <20> <> <EFBFBD> <EFBFBD> */
2016-02-25 19:57:02 +08:00
# define ACL_XML_FLAG_XML_ENCODE (1 << 3)
2019-07-28 10:31:56 +08:00
ACL_VSTRING * decode_buf ; /**< <20> <> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> xml <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> ǿ<EFBFBD> */
2014-11-19 00:25:21 +08:00
2019-07-28 10:31:56 +08:00
/* public: for acl_iterator, ͨ<> <CDA8> acl_foreach <20> <> <EFBFBD> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӽڵ<D3BD> */
2014-11-19 00:25:21 +08:00
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_head ) ( ACL_ITER * , ACL_XML * ) ;
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_next ) ( ACL_ITER * , ACL_XML * ) ;
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> β<EFBFBD> <CEB2> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_tail ) ( ACL_ITER * , ACL_XML * ) ;
2019-07-28 10:31:56 +08:00
/* ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
2014-11-19 00:25:21 +08:00
ACL_XML_NODE * ( * iter_prev ) ( ACL_ITER * , ACL_XML * ) ;
} ;
/***************************************************************************/
2019-07-28 10:31:56 +08:00
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿڣ<D3BF> <DAA3> û<EFBFBD> <C3BB> <EFBFBD> <EFBFBD> Է<EFBFBD> <D4B7> <EFBFBD> ʹ <EFBFBD> øýӿڼ<D3BF> */
2014-11-19 00:25:21 +08:00
/***************************************************************************/
/*----------------------------- in acl_xml.c ------------------------------*/
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> ж <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> պ ϵ <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> Ҳ <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> DZ պ ϵ <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { int } 0 : <EFBFBD> <EFBFBD> ; 1 : <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_is_closure ( ACL_XML * xml ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ѿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> ñ <EFBFBD> ǩ <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> root һ <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD>
* <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> ı <EFBFBD> ǩ <EFBFBD> <EFBFBD> ͬ ʱ , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , Ϊ <EFBFBD> <EFBFBD> ֤ <EFBFBD> ж ϵ <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> ,
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ Ӧ <EFBFBD> <EFBFBD> ֤ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĸ <EFBFBD> <EFBFBD> ڵ <EFBFBD> ֻ <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> xml - > root <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD> ֻ <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tag { const char * } <EFBFBD> û <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> , <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ƥ <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ִ <EFBFBD> С д
* @ return { int } 0 : <EFBFBD> <EFBFBD> ; 1 : <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_is_complete ( ACL_XML * xml , const char * tag ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_XML * } <EFBFBD> ´ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML * acl_xml_alloc ( void ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䶼 <EFBFBD> ڸ <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ͻ <EFBFBD> <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD>
* @ param dbuf { ACL_DBUF_POOL * } <EFBFBD> ڴ <EFBFBD> <EFBFBD> ض <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Է <EFBFBD> NULL ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ͻ <EFBFBD> <EFBFBD> з <EFBFBD> <EFBFBD> 䣬 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_XML * } <EFBFBD> ´ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
2015-11-20 23:29:10 +08:00
ACL_API ACL_XML * acl_xml_dbuf_alloc ( ACL_DBUF_POOL * dbuf ) ;
2014-11-19 00:25:21 +08:00
2016-02-25 19:57:02 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> ǰ xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> Ѿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> ռ <EFBFBD> <EFBFBD> <EFBFBD> С
2016-02-25 19:57:02 +08:00
* @ param xml { ACL_XML * }
2019-07-28 10:31:56 +08:00
* @ return { size_t } <EFBFBD> <EFBFBD> ǰ xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> ѷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD> С
2016-02-25 19:57:02 +08:00
*/
ACL_API size_t acl_xml_space ( ACL_XML * xml ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ¼ <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 0
2016-02-25 19:57:02 +08:00
* @ param xml { ACL_XML * }
*/
ACL_API void acl_xml_space_clear ( ACL_XML * xml ) ;
2014-11-19 00:25:21 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> ij һ <EFBFBD> <EFBFBD> ACL_XML_NODE <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> Ϊ һ <EFBFBD> <EFBFBD> XML <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĸ <EFBFBD> <EFBFBD> ڵ 㣬 <EFBFBD> Ӷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Է <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ر <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD> ( <EFBFBD> ڱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> н ڵ 㲻 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ) <EFBFBD> <EFBFBD> <EFBFBD> ñ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ <EFBFBD> б <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij һ <EFBFBD> <EFBFBD> ACL_XML_NODE <EFBFBD> ڵ <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> ܱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } AXL_XML_NODE <EFBFBD> ڵ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_foreach_init ( ACL_XML * xml , ACL_XML_NODE * node ) ;
2015-11-27 23:07:43 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㣬 <EFBFBD> ڲ <EFBFBD> ȱ ʡ ֧ <EFBFBD> ֶ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param on { int } <EFBFBD> <EFBFBD> 0 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ 0 <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֹ <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> ʱ <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> ڽ <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> 㷵 <EFBFBD> <EFBFBD> ʣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-27 23:07:43 +08:00
*/
ACL_API void acl_xml_multi_root ( ACL_XML * xml , int on ) ;
2014-11-19 00:25:21 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> XML <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> û <EFBFBD> <EFBFBD> / , <EFBFBD> <EFBFBD> :
* < test id = 111 > , < test id = 111 / > , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> û <EFBFBD> <EFBFBD> / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> д <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> Ǻ Ϸ <EFBFBD> <EFBFBD> ģ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֻ <EFBFBD> е ڶ <EFBFBD> <EFBFBD> <EFBFBD> д <EFBFBD> <EFBFBD> <EFBFBD> Ǻ Ϸ <EFBFBD> <EFBFBD> ģ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ּ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԣ <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param ignore { int } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 0 <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_slash ( ACL_XML * xml , int ignore ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> 룬 <EFBFBD> ڲ <EFBFBD> ȱ ʡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-20 23:29:10 +08:00
* @ param xml { ACL_XML * }
2019-07-28 10:31:56 +08:00
* @ param on { int } <EFBFBD> <EFBFBD> 0 <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
2015-11-20 23:29:10 +08:00
ACL_API void acl_xml_decode_enable ( ACL_XML * xml , int on ) ;
2014-11-19 00:25:21 +08:00
2016-02-25 19:57:02 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> 룬 <EFBFBD> ڲ <EFBFBD> ȱ ʡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2016-02-25 19:57:02 +08:00
*/
ACL_API void acl_xml_encode_enable ( ACL_XML * xml , int on ) ;
2014-11-19 00:25:21 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> ͷ <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , ͬ ʱ <EFBFBD> ͷ Ÿ ö <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { int } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ ŵ <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_free ( ACL_XML * xml ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> XML <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_reset ( ACL_XML * xml ) ;
/*------------------------- in acl_xml_parse.c ----------------------------*/
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param data { const char * } <EFBFBD> <EFBFBD> ' \0 ' <EFBFBD> <EFBFBD> β <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ;
* Ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dz <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ô ˺ <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { const char * } <EFBFBD> <EFBFBD> ͨ <EFBFBD> <EFBFBD> acl_xml_multi_root <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ص ĵ <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> ֽ <EFBFBD> Ϊ ' \0 ' ; <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݵ <EFBFBD> ַ
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD>
* ע <EFBFBD> <EFBFBD> Ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͨ <EFBFBD> <EFBFBD> acl_xml_is_complete <EFBFBD> ж <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
2015-11-27 23:07:43 +08:00
ACL_API const char * acl_xml_update ( ACL_XML * xml , const char * data ) ;
2014-11-19 00:25:21 +08:00
# define acl_xml_parse acl_xml_update
/*------------------------- in acl_xml_util.c -----------------------------*/
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> input , br , hr <EFBFBD> ȵ <EFBFBD> <EFBFBD> Ա պ ϱ <EFBFBD> ǩ , <EFBFBD> γ <EFBFBD> <EFBFBD> Ա պ ϱ <EFBFBD> ǩ <EFBFBD> <EFBFBD> , <EFBFBD> Ա <EFBFBD> <EFBFBD> <EFBFBD>
* acl_xml_tag_selfclosed <EFBFBD> <EFBFBD> ѯ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> Ƿ <EFBFBD> <EFBFBD> DZ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ա պ ϱ <EFBFBD> ǩ ,
* <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> ֻ <EFBFBD> ܱ <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> , Ҳ <EFBFBD> <EFBFBD> <EFBFBD> Բ <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_tag_init ( void ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> û <EFBFBD> <EFBFBD> Լ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ Щ <EFBFBD> <EFBFBD> <EFBFBD> Ա պ ϵ ı <EFBFBD> ǩ
* @ param tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ע <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> Ȳ <EFBFBD> <EFBFBD> ô <EFBFBD> <EFBFBD> <EFBFBD> 254 <EFBFBD> <EFBFBD> <EFBFBD> ֽ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_tag_add ( const char * tag ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_tag_init <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ա պ ϱ <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> Ե <EFBFBD> <EFBFBD> ô ˺ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> ǩ <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ա պ ϱ <EFBFBD> ǩ , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_tag_init , <EFBFBD> <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 0
* @ parma tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { int } 0 : <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> , 1 : <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_tag_selfclosed ( const char * tag ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> ж ϱ <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> Ҷ <EFBFBD> ڵ <EFBFBD> , Ҷ <EFBFBD> ڵ <EFBFBD> û <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD>
* @ param tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD>
* @ return { int } 0 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҷ <EFBFBD> ڵ <EFBFBD> ; 1 : <EFBFBD> <EFBFBD> Ҷ <EFBFBD> ڵ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_tag_leaf ( const char * tag ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> ͷ <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_getElementsByTagName , acl_xml_getElementsByName ,
* acl_xml_getElementsByAttr <EFBFBD> Ⱥ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ص Ķ <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> Ϊ <EFBFBD> ö <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD>
* Ԫ <EFBFBD> ض <EFBFBD> <EFBFBD> <EFBFBD> ACL_XML <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ԫ <EFBFBD> ص <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ ŵ <EFBFBD> <EFBFBD> ö <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , ֻ Ҫ ACL_XML
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ <EFBFBD> , <EFBFBD> <EFBFBD> ԭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڸ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> Ԫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʹ <EFBFBD> <EFBFBD> .
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> <EFBFBD>
* @ param a { ACL_ARRAY * } <EFBFBD> <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_free_array ( ACL_ARRAY * a ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
2015-10-20 21:07:23 +08:00
ACL_API ACL_XML_NODE * acl_xml_getFirstElementByTagName (
ACL_XML * xml , const char * tag ) ;
2014-11-19 00:25:21 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_ARRAY * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㼯 <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> ǿ <EFBFBD> ֵ <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_free_array <EFBFBD> ͷ <EFBFBD>
2015-10-20 21:07:23 +08:00
*/
ACL_API ACL_ARRAY * acl_xml_getElementsByTagName (
ACL_XML * xml , const char * tag ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ༶ <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tags { const char * } <EFBFBD> ༶ <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ' / ' <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> ݣ <EFBFBD>
2014-11-19 00:25:21 +08:00
* < root > < first > < second > < third name = " test1 " > text1 < / third > < / second > < / first >
* < root > < first > < second > < third name = " test2 " > text2 < / third > < / second > < / first >
* < root > < first > < second > < third name = " test3 " > text3 < / third > < / second > < / first >
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͨ <EFBFBD> <EFBFBD> <EFBFBD> ༶ <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> root / first / second / third һ <EFBFBD> <EFBFBD> <EFBFBD> Բ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD>
* @ return { ACL_ARRAY * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㼯 <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> ǿ <EFBFBD> ֵ <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_free_array <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_ARRAY * acl_xml_getElementsByTags ( ACL_XML * xml , const char * tags ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> name <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param value { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ name <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return { ACL_ARRAY * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㼯 <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> ǿ <EFBFBD> ֵ <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_free_array <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_ARRAY * acl_xml_getElementsByName ( ACL_XML * xml , const char * value ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> и <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param name { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param value { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return { ACL_ARRAY * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㼯 <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> ǿ <EFBFBD> ֵ <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_free_array <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_ARRAY * acl_xml_getElementsByAttr ( ACL_XML * xml ,
const char * name , const char * value ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> id ֵ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> ص <EFBFBD> ij <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param id { const char * } id ֵ
* @ return { ACL_XML_ATTR * } ij xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
* û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_ATTR * acl_xml_getAttrById ( ACL_XML * xml , const char * id ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> id ֵ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> ص <EFBFBD> ij <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param id { const char * } id ֵ
* @ return { const char * } ij xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API const char * acl_xml_getAttrValueById ( ACL_XML * xml , const char * id ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> id ֵ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param id { const char * } id ֵ
* @ return { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_getElementById ( ACL_XML * xml , const char * id ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? ! <EFBFBD> ȿ <EFBFBD> ͷ <EFBFBD> Ľ ڵ <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD>
* @ return { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD> Ԫ <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ û <EFBFBD> з <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_getElementMeta ( ACL_XML * xml , const char * tag ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL ʱ <EFBFBD> <EFBFBD> ʾ û <EFBFBD> и <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API const char * acl_xml_getEncoding ( ACL_XML * xml ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> ݵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͣ <EFBFBD> <EFBFBD> 磺 text / xsl
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> <EFBFBD> ʾ û <EFBFBD> и <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API const char * acl_xml_getType ( ACL_XML * xml ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ param name { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_XML_ATTR * } <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> , Ϊ <EFBFBD> ձ <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_ATTR * acl_xml_getElementAttr ( ACL_XML_NODE * node , const char * name ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> л <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ param name { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ , Ϊ <EFBFBD> ձ <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API const char * acl_xml_getElementAttrVal ( ACL_XML_NODE * node , const char * name ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> ɾ <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ id <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> ͬ ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml - > id_table <EFBFBD> <EFBFBD> ɾ <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ param name { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { int } 0 <EFBFBD> <EFBFBD> ʾ ɾ <EFBFBD> <EFBFBD> <EFBFBD> ɹ <EFBFBD> , - 1 : <EFBFBD> <EFBFBD> ʾ ɾ <EFBFBD> <EFBFBD> ʧ <EFBFBD> <EFBFBD> ( <EFBFBD> п <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Բ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_removeElementAttr ( ACL_XML_NODE * node , const char * name ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ѵ <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> µ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> 滻 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> µ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ param name { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param value { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return { ACL_XML_ATTR * } <EFBFBD> <EFBFBD> <EFBFBD> ظ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> ( <EFBFBD> п <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , Ҳ <EFBFBD> п <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> µ <EFBFBD> ) ,
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_ATTR * acl_xml_addElementAttr ( ACL_XML_NODE * node ,
const char * name , const char * value ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㣬 <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> ö <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_xml_alloc <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tagname { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȴ <EFBFBD> <EFBFBD> <EFBFBD> 0
* @ param text { const char * } <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD>
* @ return { ACL_XML_NODE * } <EFBFBD> ´ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㣬 <EFBFBD> ÷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> ط ǿ գ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᵼ <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_create_node ( ACL_XML * xml ,
const char * tagname , const char * text ) ;
2016-02-25 19:57:02 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㣬 ʹ <EFBFBD> <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ ʱ <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> XML <EFBFBD> <EFBFBD> <EFBFBD> 봦 <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param tag { const char * } <EFBFBD> <EFBFBD> ǩ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param in { ACL_VSTREAM * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݽ <EFBFBD> <EFBFBD> <EFBFBD> Ϊ xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param off { size_t } <EFBFBD> <EFBFBD> in Ϊ <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD> ʱ ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> ʼ λ <EFBFBD> <EFBFBD>
* @ param len { size_t } ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> п <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݳ <EFBFBD> <EFBFBD> ȣ <EFBFBD> <EFBFBD> <EFBFBD> Ϊ 0 ʱ <EFBFBD> <EFBFBD> һ ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ´ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㣬 <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> ط <EFBFBD> NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2016-02-25 19:57:02 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_create_node_with_text_stream ( ACL_XML * xml ,
const char * tag , ACL_VSTREAM * in , size_t off , size_t len ) ;
2014-11-19 00:25:21 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԣ <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ
* @ param node { ACL_XML_NODE * } <EFBFBD> <EFBFBD> acl_xml_create_node <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD>
* @ param name { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> ǿ <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȴ <EFBFBD> <EFBFBD> <EFBFBD> 0
* @ param value { const char * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD>
* @ return { ACL_XML_ATTR * } xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> ʱ <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> ڲ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_ATTR * acl_xml_node_add_attr ( ACL_XML_NODE * node ,
const char * name , const char * value ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԣ <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ
* @ param node { ACL_XML_NODE * } <EFBFBD> <EFBFBD> acl_xml_create_node <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD>
* @ param . . . һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NULL ʱ <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 磺
2014-11-19 00:25:21 +08:00
* { name1 } , { value1 } , { name2 } , { value2 } , . . . NULL
*/
ACL_API void acl_xml_node_add_attrs ( ACL_XML_NODE * node , . . . ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݣ <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ý ڵ <EFBFBD> ֮ ǰ <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԭ <EFBFBD> ı <EFBFBD>
* @ param node { ACL_XML_NODE * } <EFBFBD> <EFBFBD> acl_xml_create_node <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD>
* @ param text { const char * } <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_node_set_text ( ACL_XML_NODE * node , const char * text ) ;
2016-02-25 19:57:02 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݣ <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> ڸ ý ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> µ <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } <EFBFBD> <EFBFBD> acl_xml_create_node <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD>
* @ param text { const char * } <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2016-02-25 19:57:02 +08:00
*/
ACL_API void acl_xml_node_add_text ( ACL_XML_NODE * node , const char * text ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݸ <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } <EFBFBD> <EFBFBD> acl_xml_create_node <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD>
2019-09-13 19:47:23 +08:00
* @ param fp { ACL_VSTREAM * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-07-28 10:31:56 +08:00
* @ param off { size_t } <EFBFBD> <EFBFBD> in Ϊ <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> ʼ λ <EFBFBD> <EFBFBD>
* @ param len { size_t } Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݳ <EFBFBD> <EFBFBD> ȣ <EFBFBD> <EFBFBD> <EFBFBD> Ϊ 0 ʱ <EFBFBD> <EFBFBD> һ ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2016-02-25 19:57:02 +08:00
*/
ACL_API void acl_xml_node_set_text_stream ( ACL_XML_NODE * node ,
ACL_VSTREAM * fp , size_t off , size_t len ) ;
2014-11-19 00:25:21 +08:00
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ת <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param buf { ACL_VSTRING * } <EFBFBD> 洢 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ļ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ò <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> ͷ ŵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ պ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ֱ <EFBFBD> ӽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 洢 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_VSTRING * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ת <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĵ 洢 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ÷ <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> Զ <EFBFBD> ǿ գ <EFBFBD>
* ʹ <EFBFBD> <EFBFBD> <EFBFBD> ߿ <EFBFBD> <EFBFBD> <EFBFBD> ͨ <EFBFBD> <EFBFBD> ACL_VSTRING_LEN ( x ) <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> Ϊ <EFBFBD> գ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ص <EFBFBD> ACL_VSTRING
* ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ģ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> û <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> acl_vstring_free <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_VSTRING * acl_xml_build ( ACL_XML * xml , ACL_VSTRING * buf ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ת <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> ע <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ת <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param fp { ACL_VSTREAM * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_dump ( ACL_XML * xml , ACL_VSTREAM * fp ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ת <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> ע <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ת <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param buf { ACL_VSTRING * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> Ҫ <EFBFBD> û <EFBFBD> <EFBFBD> Լ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_dump2 ( ACL_XML * xml , ACL_VSTRING * buf ) ;
/***************************************************************************/
2019-07-28 10:31:56 +08:00
/* <20> <> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> Ϊ<EFBFBD> ͼ<EFBFBD> <CDBC> Ľӿ<C4BD> , <20> û<EFBFBD> <C3BB> <EFBFBD> <EFBFBD> Ը<EFBFBD> <D4B8> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ½ӿ<C2BD> */
2014-11-19 00:25:21 +08:00
/***************************************************************************/
/*----------------------------- in acl_xml.c ------------------------------*/
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ return { ACL_XML_ATTR * } <EFBFBD> ´ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_ATTR * acl_xml_attr_alloc ( ACL_XML_NODE * node ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD>
* @ param xml { ACL_XML * } xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_node_alloc ( ACL_XML * xml ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ 㼰 <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɾ <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> ͷ Ÿ ý ڵ 㼰 <EFBFBD> <EFBFBD> <EFBFBD> ӽ ڵ <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> ռ <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ Ÿ <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> ڴ <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ return { int } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɾ <EFBFBD> <EFBFBD> <EFBFBD> Ľ ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API int acl_xml_node_delete ( ACL_XML_NODE * node ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ ܽ ڵ <EFBFBD> ( <EFBFBD> <EFBFBD> <EFBFBD> ֵ ܽ ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> )
* @ param node1 { ACL_XML_NODE * } <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD>
* @ param node2 { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ <EFBFBD> <EFBFBD> ֵ <EFBFBD> xml <EFBFBD> ڵ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_node_append ( ACL_XML_NODE * node1 , ACL_XML_NODE * node2 ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> ӽ ڵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param parent { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD>
* @ param child { ACL_XML_NODE * } <EFBFBD> ӽ ڵ <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API void acl_xml_node_add_child ( ACL_XML_NODE * parent , ACL_XML_NODE * child ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> ĸ <EFBFBD> <EFBFBD> ڵ <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ return { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> ڵ <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> 丸 <EFBFBD> ڵ 㲻 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_node_parent ( ACL_XML_NODE * node ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> ĺ <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ֵ ܽ ڵ <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ return { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> ĺ <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ֵ ܽ ڵ <EFBFBD> , <EFBFBD> <EFBFBD> Ϊ NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_node_next ( ACL_XML_NODE * node ) ;
/**
2019-07-28 10:31:56 +08:00
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> ǰ һ <EFBFBD> <EFBFBD> <EFBFBD> ֵ ܽ ڵ <EFBFBD>
* @ param node { ACL_XML_NODE * } xml <EFBFBD> ڵ <EFBFBD>
* @ return { ACL_XML_NODE * } <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> xml <EFBFBD> ڵ <EFBFBD> <EFBFBD> <EFBFBD> ǰ һ <EFBFBD> <EFBFBD> <EFBFBD> ֵ ܽ ڵ <EFBFBD> , <EFBFBD> <EFBFBD> Ϊ NULL <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_API ACL_XML_NODE * acl_xml_node_prev ( ACL_XML_NODE * node ) ;
# ifdef __cplusplus
}
# endif
# endif