static Eina_Bool _etui_epub_opf_is_valid(Etui_Provider_Data *pd) { char buf[PATH_MAX]; Eina_File *f; snprintf(buf, sizeof(buf), "%s/%s", pd->doc.path, pd->container.content_file); buf[sizeof(buf) - 1] = '\0'; f = eina_file_open(buf, EINA_FALSE); if (!f) return EINA_FALSE; if (!eina_simple_xml_parse((const char *)eina_file_map_all(f, EINA_FILE_POPULATE), eina_file_size_get(f), EINA_TRUE, _etui_epub_opf_parse_cb, pd)) { eina_file_close(f); return EINA_FALSE; } eina_file_close(f); return EINA_TRUE; }
int main(void) { FILE *file; long size; eina_init(); //1. Open XML File file = fopen("exia.xml", "rb"); if (!file) return 0; fseek(file, 0, SEEK_END); size = ftell(file); fseek(file, 0, SEEK_SET); //2. Read XML File char *buffer = malloc(size); if (!buffer) { fclose(file); return 0; } fread(buffer, 1, size, file); //3. Start Parsing XML eina_simple_xml_parse(buffer, size, EINA_FALSE, _xml_tag_parse_cb, NULL); fclose(file); free(buffer); return 0; }
int main(int argc, char **argv) { char *xml_buf = NULL; DBus_Object *obj = NULL; char *prefix = NULL, *interface = NULL, *output = NULL; Eina_Bool quit_option = EINA_FALSE; int arg_index; Ecore_Getopt_Value values[] = { ECORE_GETOPT_VALUE_STR(prefix), ECORE_GETOPT_VALUE_STR(interface), ECORE_GETOPT_VALUE_STR(output), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_NONE }; eina_init(); arg_index = ecore_getopt_parse(&optdesc, values, argc, argv); if (arg_index == -1) { printf("Error: parsing arguments.\n"); return -1; } if (quit_option) return 0; if (argc <= arg_index) { printf("Error: Missing file name.\n"); return -1; } if (!file_read(argv[arg_index], &xml_buf)) { printf("Error reading file.\n"); goto end; } if (!eina_simple_xml_parse(xml_buf, strlen(xml_buf), EINA_TRUE, parser, &obj)) { printf("Error: could not parse XML\n"); goto end; } source_client_generate(obj, prefix, interface, output); util_h_write(); end: if (obj) object_free(obj); free(xml_buf); eina_shutdown(); return 0; }
static Eina_Bool _etui_epub_ncx_is_valid(Etui_Provider_Data *pd) { char buf[PATH_MAX]; Etui_Epub_Opf_Manifest_Item *item; Eina_File *f; char *oebps_dir; if (!pd->opf.toc_id) return EINA_FALSE; item = eina_hash_find(pd->opf.manifest, pd->opf.toc_id); if (!item) return EINA_FALSE; oebps_dir = strdup(pd->container.content_file); if (!oebps_dir) return EINA_FALSE; snprintf(buf, sizeof(buf), "%s/%s/%s", pd->doc.path, dirname(oebps_dir), item->href); buf[sizeof(buf) - 1] = '\0'; free(oebps_dir); f = eina_file_open(buf, EINA_FALSE); if (!f) { return EINA_FALSE; } pd->ncx.current_depth = -1; if (!eina_simple_xml_parse((const char *)eina_file_map_all(f, EINA_FILE_POPULATE), eina_file_size_get(f), EINA_TRUE, _etui_epub_ncx_parse_cb, pd)) { eina_file_close(f); return EINA_FALSE; } eina_file_close(f); return EINA_TRUE; }
EAPI Eina_Simple_XML_Node_Root * eina_simple_xml_node_load(const char *buf, unsigned buflen, Eina_Bool strip) { Eina_Simple_XML_Node_Root *root; struct eina_simple_xml_node_load_ctxt ctx; if (!buf) return NULL; root = eina_mempool_malloc(_eina_simple_xml_tag_mp, sizeof(*root)); if (!root) return NULL; memset(root, 0, sizeof(*root)); EINA_MAGIC_SET(&root->base, EINA_MAGIC_SIMPLE_XML_TAG); root->base.type = EINA_SIMPLE_XML_NODE_ROOT; ctx.root = root; ctx.current = root; eina_simple_xml_parse(buf, buflen, strip, _eina_simple_xml_node_parse, &ctx); return root; }
static void _parse(EMap_Route *route) { if(!route) return; if(!route->type == EMAP_TRACK_TYPE_GPX) return; DBG("[Start] Load GPX file %s", route->gpx.file); FILE *f = fopen(route->gpx.file, "rb"); if (f) { long sz; fseek(f, 0, SEEK_END); sz = ftell(f); if (sz > 0) { char *buf; fseek(f, 0, SEEK_SET); buf = malloc(sz); if (buf) { size_t n = fread(buf, 1, sz, f); eina_simple_xml_parse(buf, n, EINA_TRUE, _parser_cb, route); free(buf); } } fclose(f); } else { ERR("can't open the file %s", route->gpx.file); return ; } DBG("[Done] Load GPX file %s", route->gpx.file); }