Source
static void json_to_xmlnode(struct zbx_json_parse *jp, char *arr_name, int deep, xmlDoc *doc, xmlNode *parent_node,
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
typedef struct _zbx_xml_node_t zbx_xml_node_t;
ZBX_PTR_VECTOR_DECL(xml_node_ptr, zbx_xml_node_t *)
struct _zbx_xml_node_t
{
char *name;
char *value;
zbx_vector_str_t attributes;
zbx_vector_xml_node_ptr_t chnodes;
int is_array;
};
ZBX_PTR_VECTOR_IMPL(xml_node_ptr, zbx_xml_node_t *)
static char data_static[ZBX_MAX_B64_LEN];
/******************************************************************************
* *
* Purpose: get DATA from <tag>DATA</tag> *
* *
* !!! Attention: static !!! Not thread-safe *
* *
******************************************************************************/
int zbx_xml_get_data_dyn(const char *xml, const char *tag, char **data)
{
size_t len, sz;
const char *start, *end;
sz = sizeof(data_static);
len = zbx_snprintf(data_static, sz, "<%s>", tag);
if (NULL == (start = strstr(xml, data_static)))
return FAIL;
zbx_snprintf(data_static, sz, "</%s>", tag);
if (NULL == (end = strstr(xml, data_static)))