int main (int argc, char *argv[]) { scew_reader *reader = NULL; scew_parser *parser = NULL; scew_tree *tree = NULL; scew_writer *writer = NULL; scew_printer *printer = NULL; #if defined(_MSC_VER) && defined(XML_UNICODE_WCHAR_T) /* Change stdout to Unicode before writing anything. */ _setmode(_fileno(stdout), _O_U16TEXT); #endif /* _MSC_VER && XML_UNICODE_WCHAR_T */ if (argc < 2) { scew_printf (_XT("Usage: scew_print file.xml\n")); return EXIT_FAILURE; } /* Creates an SCEW parser. This is the first function to call. */ parser = scew_parser_create (); scew_parser_ignore_whitespaces (parser, SCEW_TRUE); /* Loads an XML file. */ reader = scew_reader_file_create (argv[1]); if (reader == NULL) { scew_error code = scew_error_code (); scew_printf (_XT("Unable to load file (error #%d: %s)\n"), code, scew_error_string (code)); return EXIT_FAILURE; } tree = scew_parser_load (parser, reader); if (tree == NULL) { scew_error code = scew_error_code (); scew_printf (_XT("Unable to parse file (error #%d: %s)\n"), code, scew_error_string (code)); if (code == scew_error_expat) { enum XML_Error expat_code = scew_error_expat_code (parser); scew_printf (_XT("Expat error #%d (line %d, column %d): %s\n"), expat_code, scew_error_expat_line (parser), scew_error_expat_column (parser), scew_error_expat_string (expat_code)); } /* Frees the SCEW parser and reader. */ scew_reader_free (reader); scew_parser_free (parser); return EXIT_FAILURE; } /* Prints full tree. */ scew_printf (_XT("\n*** Manual print:\n\n")); print_element (scew_tree_root (tree), 0); /* Prints full tree using SCEW writer. */ scew_printf (_XT("\n\n*** SCEW writer (stdout) print:\n\n")); writer = scew_writer_fp_create (stdout); printer = scew_printer_create (writer); scew_printer_print_tree (printer, tree); scew_printf (_XT("\n")); /* Remember to free tree (scew_parser_free does not free it). */ scew_tree_free (tree); /* Also free the printer and writer. */ scew_writer_free (writer); scew_printer_free (printer); /* Frees the SCEW parser and reader. */ scew_reader_free (reader); scew_parser_free (parser); return 0; }
/** * @brief Save data from member variables to path-file. * @param [in] path Path to project file. * @param [out] sError Error string if error happened. * @return TRUE if saving succeeded, FALSE if error happened. */ BOOL ProjectFile::Save(LPCTSTR path, String *sError) { BOOL success = TRUE; scew_tree* tree = NULL; scew_element* root = NULL; scew_element* paths = NULL; tree = scew_tree_create(); root = scew_tree_set_root(tree, Root_element_name); if (root != NULL) { paths = AddPathsElement(root); } else success = FALSE; if (paths != NULL) { AddPathsContent(paths); } else success = FALSE; scew_tree_set_xml_encoding(tree, "UTF-8"); scew_writer *writer = NULL; scew_printer *printer = NULL; FILE * fp = _tfopen(path, _T("w")); if (fp) { writer = scew_writer_fp_create(fp); if (writer) { printer = scew_printer_create(writer); if (!scew_printer_print_tree(printer, tree) || !scew_printf(_XT("\n"))) { success = FALSE; *sError = LoadResString(IDS_FILEWRITE_ERROR); } } else { success = FALSE; *sError = LoadResString(IDS_FILEWRITE_ERROR); } fclose(fp); } else { success = FALSE; } /* Frees the SCEW tree */ scew_tree_free(tree); scew_writer_free(writer); scew_printer_free(printer); if (success == FALSE) { *sError = LoadResString(IDS_FILEWRITE_ERROR); } return success; }