void XMLInOut::MarkSection(void) { int numbytes; xmlTextWriterFlush(writer); numbytes = xmlBufferLength(buf); sections.push_front(numbytes); // cout << "Current marked buffer @ index-end:" << numbytes << endl // << "'" << (const char*)buf->content << "'" << endl; }
Variant c_XMLWriter::t_flush(bool empty /* = true */) { if (m_ptr && m_output) { xmlTextWriterFlush(m_ptr); String ret((char*)m_output->content, CopyString); if (empty) { xmlBufferEmpty(m_output); } return ret; } return ""; }
/** * xml_writer_flush: * @writer: A #XmlWriter * * Flushes the current state to the storage medium. */ void xml_writer_flush (XmlWriter *writer) { XmlWriterPrivate *priv; g_return_if_fail (XML_IS_WRITER (writer)); priv = writer->priv; if (priv->writer) xmlTextWriterFlush (priv->writer); }
Variant c_XMLWriter::t_flush(bool empty /* = true */) { INSTANCE_METHOD_INJECTION_BUILTIN(XMLWriter, XMLWriter::flush); if (m_ptr && m_output) { xmlTextWriterFlush(m_ptr); String ret((char*)m_output->content, CopyString); if (empty) { xmlBufferEmpty(m_output); } return ret; } return ""; }
void temporal_convert_parallel_passages() // This was used to convert file NT_order_of_OT_Quotations_in_NT.pps to xml. // Then for converting NT_Parallel_Passages.pps. // Then for converting OT_Parallel_Passages.pps. { bool set_opened = false; xmlBufferPtr buffer = xmlBufferCreate(); xmlTextWriterPtr writer = xmlNewTextWriterMemory(buffer, 0); xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); xmlTextWriterSetIndent(writer, 1); xmlTextWriterStartElement(writer, BAD_CAST "ot-parallel-passages"); ReadText rt("/home/joe/parallel-passages/OT_Parallel_Passages.pps", true); for (unsigned int i = 0; i < rt.lines.size(); i++) { if (rt.lines[i].find("\\key ") == 0) { rt.lines[i].erase(0, 5); xmlTextWriterStartElement(writer, BAD_CAST "section"); xmlTextWriterWriteAttribute(writer, BAD_CAST "title", BAD_CAST rt.lines[i].c_str()); } if (rt.lines[i].find("\\ref ") == 0) { if (!set_opened) { xmlTextWriterStartElement(writer, BAD_CAST "set"); set_opened = true; } xmlTextWriterStartElement(writer, BAD_CAST "reference"); rt.lines[i].erase(0, 5); ustring book, chapter, verse; decode_reference(rt.lines[i], book, chapter, verse); book = books_id_to_english(books_paratext_to_id(book)); xmlTextWriterWriteAttribute(writer, BAD_CAST "book", BAD_CAST book.c_str()); xmlTextWriterWriteAttribute(writer, BAD_CAST "chapter", BAD_CAST chapter.c_str()); xmlTextWriterWriteAttribute(writer, BAD_CAST "verse", BAD_CAST verse.c_str()); xmlTextWriterEndElement(writer); } if (rt.lines[i].empty() || (rt.lines[i].find("\\com") == 0)) { xmlTextWriterEndElement(writer); set_opened = false; } if (rt.lines[i].empty()) { xmlTextWriterEndElement(writer); } } xmlTextWriterEndDocument(writer); xmlTextWriterFlush(writer); g_file_set_contents("/home/joe/ot-parallel-passages.xml", (const gchar *)buffer->content, -1, NULL); if (writer) xmlFreeTextWriter(writer); if (buffer) xmlBufferFree(buffer); }
daeInt daeLIBXMLPlugin::write(daeURI *name, daeDocument *document, daeBool replace) { // Make sure database and document are both set if (!database) return DAE_ERR_INVALID_CALL; if(!document) return DAE_ERR_COLLECTION_DOES_NOT_EXIST; // Extract just the file path from the URI daeFixedName finalname; if (!name->getPath(finalname,sizeof(finalname))) { printf( "can't get path in write\n" ); return DAE_ERR_BACKEND_IO; } // If replace=false, don't replace existing files if(!replace) { // Using "stat" would be better, but it's not available on all platforms FILE *tempfd = fopen(finalname,"r"); if(tempfd != NULL) { // File exists, return error fclose(tempfd); return DAE_ERR_BACKEND_FILE_EXISTS; } } // Open the file we will write to writer = xmlNewTextWriterFilename(name->getURI(), 0); if ( !writer ) { printf( "no libxml2 writer\n" ); return DAE_ERR_BACKEND_IO; } xmlChar indentString[10] = " "; xmlTextWriterSetIndentString( writer, indentString ); xmlTextWriterSetIndent( writer, 1 ); xmlTextWriterStartDocument( writer, NULL, NULL, NULL ); writeElement( document->getDomRoot() ); xmlTextWriterEndDocument( writer ); xmlTextWriterFlush( writer ); xmlFreeTextWriter( writer ); return DAE_OK; }
axis2_status_t AXIS2_CALL axis2_libxml2_writer_wrapper_flush( axiom_xml_writer_t * writer, const axutil_env_t * env) { axis2_libxml2_writer_wrapper_impl_t *writer_impl = NULL; writer_impl = AXIS2_INTF_TO_IMPL(writer); if(writer_impl->xml_writer) { int ret = 0; ret = xmlTextWriterFlush(writer_impl->xml_writer); if(ret > -1) return AXIS2_SUCCESS; } return AXIS2_FAILURE; }
void *AXIS2_CALL axis2_libxml2_writer_wrapper_get_xml( axiom_xml_writer_t * writer, const axutil_env_t * env) { axis2_libxml2_writer_wrapper_impl_t *writer_impl = NULL; writer_impl = AXIS2_INTF_TO_IMPL(writer); if(writer_impl->writer_type == AXIS2_XML_PARSER_TYPE_BUFFER) { int output_bytes = 0; output_bytes = xmlTextWriterFlush(writer_impl->xml_writer); return writer_impl->buffer->content; } else if(writer_impl->writer_type == AXIS2_XML_PARSER_TYPE_DOC) { return (void *)writer_impl->doc; } else if(writer_impl->writer_type == AXIS2_XML_PARSER_TYPE_FILE) { return NULL; } return NULL; }
static inline void tearDownCopyToStringWriter(MwsHarvest_SaxUserData* data) { xmlTextWriterEndDocument(data->stringWriter); xmlTextWriterFlush(data->stringWriter); xmlFreeTextWriter(data->stringWriter); data->data = string(data->buffer.data(), data->buffer.size()); }
/** * glista_storage_save_all_items: * @all_items: A linked list of all items to save * * Save all items to the storage XML file */ void glista_storage_save_all_items(GList *all_items) { GlistaItem *item; xmlTextWriterPtr xml; int ret; gchar *storage_file; gchar done_str[2]; gchar *remind_at_str; remind_at_str = g_malloc0(sizeof(gchar) * 20); // Build storage file path storage_file = g_build_filename(gl_globs->configdir, GL_XML_FILENAME, NULL); // Start XML xml = xmlNewTextWriterFilename(storage_file, 0); g_free(storage_file); if (xml == NULL) { fprintf(stderr, "Unable to write data to storage XML file\n"); return; } xmlTextWriterSetIndent(xml, 1); xmlTextWriterSetIndentString(xml, BAD_CAST " "); ret = xmlTextWriterStartDocument(xml, NULL, GL_XML_ENCODING, "yes"); ret = xmlTextWriterStartElement(xml, BAD_CAST GL_XNODE_ROOT); // Iterate over items, writing them to the XML file while (all_items != NULL) { item = all_items->data; g_snprintf((gchar *) &done_str, 2, "%d", item->done); ret = xmlTextWriterStartElement(xml, BAD_CAST GL_XNODE_ITEM); ret = xmlTextWriterWriteElement(xml, BAD_CAST GL_XNODE_TEXT, BAD_CAST item->text); ret = xmlTextWriterWriteElement(xml, BAD_CAST GL_XNODE_DONE, BAD_CAST &done_str); if (item->parent != NULL) { ret = xmlTextWriterWriteElement(xml, BAD_CAST GL_XNODE_PRNT, BAD_CAST item->parent); } if (item->note != NULL) { ret = xmlTextWriterWriteElement(xml, BAD_CAST GL_XNODE_NOTE, BAD_CAST item->note); } if (item->remind_at != -1) { remind_at_str = g_strdup_printf("%d", (gint) item->remind_at); ret = xmlTextWriterWriteElement(xml, BAD_CAST GL_XNODE_RMDR, BAD_CAST remind_at_str); } ret = xmlTextWriterEndElement(xml); all_items = all_items->next; } g_free(remind_at_str); // End XML ret = xmlTextWriterEndElement(xml); ret = xmlTextWriterEndDocument(xml); xmlTextWriterFlush(xml); xmlFreeTextWriter(xml); }
int freesasa_write_xml(FILE *output, freesasa_node *root, int options) { freesasa_node *child = NULL; xmlDocPtr doc = NULL; xmlNodePtr xml_root = NULL, xml_result_node = NULL; xmlNsPtr ns = NULL; xmlBufferPtr buf = NULL; xmlTextWriterPtr writer = NULL; int ret = FREESASA_FAIL; assert(freesasa_node_type(root) == FREESASA_NODE_ROOT); doc = xmlNewDoc(BAD_CAST "1.0"); if (doc == NULL) { fail_msg(""); goto cleanup; } xml_root = xmlNewNode(NULL, BAD_CAST "results"); if (xml_root == NULL) { fail_msg(""); goto cleanup; } ns = xmlNewNs(xml_root, BAD_CAST FREESASA_XMLNS, NULL); if (ns == NULL) { fail_msg(""); xmlFreeNode(xml_root); goto cleanup; } xmlDocSetRootElement(doc, xml_root); /* global attributes */ if (xmlNewProp(xml_root, BAD_CAST "source", BAD_CAST freesasa_string) == NULL) { fail_msg(""); goto cleanup; } if (xmlNewProp(xml_root, BAD_CAST "lengthUnit", BAD_CAST "Ångström") == NULL) { fail_msg(""); goto cleanup; } child = freesasa_node_children(root); while (child) { xml_result_node = xml_result(child, options); if (xml_result_node == NULL) { fail_msg(""); goto cleanup; } if (xmlAddChild(xml_root, xml_result_node) == NULL) { fail_msg(""); xmlFreeNode(xml_result_node); goto cleanup; } child = freesasa_node_next(child); } buf = xmlBufferCreate(); if (buf == NULL) { fail_msg(""); goto cleanup; } writer = xmlNewTextWriterMemory(buf, 0); if (writer == NULL) { xmlBufferFree(buf); fail_msg(""); goto cleanup; } if (xmlTextWriterStartDocument(writer, XML_DEFAULT_VERSION, xmlGetCharEncodingName(XML_CHAR_ENCODING_UTF8), NULL) == -1) { fail_msg(""); goto cleanup; } if (xmlTextWriterFlush(writer) == -1) { fail_msg(""); goto cleanup; } if (xmlNodeDump(buf, doc, xml_root, 0, 1) == 0) { fail_msg(""); goto cleanup; } if (xmlTextWriterEndDocument(writer) == -1) { fail_msg(""); goto cleanup; } fprintf(output, "%s", (const char*) buf->content); fflush(output); if (ferror(output)) { fail_msg(strerror(errno)); goto cleanup; } ret = FREESASA_SUCCESS; cleanup: xmlFreeDoc(doc); xmlFreeTextWriter(writer); return ret; }
void xml_writer::flush() { if (xmlTextWriterFlush(pimpl->writer) < 0) { throw write_error("cannot flush output stream"); } }
void OpenDocument::generate_styles_xml(bool right_to_left) // This generates the file "styles.xml" in the OpenDocument. { // Start the new xml document. xmlBufferPtr buffer = xmlBufferCreate(); xmlTextWriterPtr writer = xmlNewTextWriterMemory(buffer, 0); xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); xmlTextWriterSetIndent(writer, 1); xmlTextWriterStartElement(writer, BAD_CAST "office:document-styles"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:office", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:office:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:style", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:style:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:text", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:text:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:table", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:table:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:draw", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:fo", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:xlink", BAD_CAST "http://www.w3.org/1999/xlink"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:dc", BAD_CAST "http://purl.org/dc/elements/1.1/"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:meta", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:meta:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:number", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:svg", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:chart", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:chart:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:dr3d", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:math", BAD_CAST "http://www.w3.org/1998/Math/MathML"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:form", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:form:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:script", BAD_CAST "urn:oasis:names:tc:opendocument:xmlns:script:1.0"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:ooo", BAD_CAST "http://openoffice.org/2004/office"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:ooow", BAD_CAST "http://openoffice.org/2004/writer"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:oooc", BAD_CAST "http://openoffice.org/2004/calc"); xmlTextWriterWriteAttribute(writer, BAD_CAST "xmlns:dom", BAD_CAST "http://www.w3.org/2001/xml-events"); xmlTextWriterWriteAttribute(writer, BAD_CAST "office:version", BAD_CAST "1.0"); // Font face declarations. xmlTextWriterStartElement(writer, BAD_CAST "office:font-face-decls"); xmlTextWriterEndElement(writer); // Styles. xmlTextWriterStartElement(writer, BAD_CAST "office:styles"); generate_styles(writer); xmlTextWriterEndElement(writer); // Automatic styles. xmlTextWriterStartElement(writer, BAD_CAST "office:automatic-styles"); xmlTextWriterStartElement(writer, BAD_CAST "style:page-layout"); xmlTextWriterWriteAttribute(writer, BAD_CAST "style:name", BAD_CAST "pm1"); xmlTextWriterStartElement(writer, BAD_CAST "style:page-layout-properties"); extern Settings *settings; xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "fo:page-width", "%.2fcm", settings->genconfig.paper_width_get()); xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "fo:page-height", "%.2fcm", settings->genconfig.paper_height_get()); xmlTextWriterWriteAttribute(writer, BAD_CAST "style:print-orientation", BAD_CAST "portrait"); xmlTextWriterWriteAttribute(writer, BAD_CAST "style:num-format", BAD_CAST "1"); xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "fo:margin-top", "%.2fcm", settings->genconfig.paper_top_margin_get()); xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "fo:margin-bottom", "%.2fcm", settings->genconfig.paper_bottom_margin_get()); xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "fo:margin-left", "%.2fcm", settings->genconfig.paper_inside_margin_get()); xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "fo:margin-right", "%.2fcm", settings->genconfig.paper_outside_margin_get()); if (right_to_left) { xmlTextWriterWriteAttribute(writer, BAD_CAST "style:writing-mode", BAD_CAST "rl-tb"); xmlTextWriterWriteAttribute(writer, BAD_CAST "writing-mode", BAD_CAST "rl-tb"); } xmlTextWriterEndElement(writer); xmlTextWriterEndElement(writer); xmlTextWriterEndElement(writer); // Master styles. xmlTextWriterStartElement(writer, BAD_CAST "office:master-styles"); xmlTextWriterStartElement(writer, BAD_CAST "style:master-page"); xmlTextWriterWriteAttribute(writer, BAD_CAST "style:name", BAD_CAST "Standard"); xmlTextWriterWriteAttribute(writer, BAD_CAST "style:page-layout-name", BAD_CAST "pm1"); xmlTextWriterEndElement(writer); xmlTextWriterEndElement(writer); // Close document. xmlTextWriterEndElement(writer); // Close document and write it to disk. xmlTextWriterEndDocument(writer); xmlTextWriterFlush(writer); ustring filename = gw_build_filename(workingdirectory, "styles.xml"); g_file_set_contents(filename.c_str(), (const gchar *)buffer->content, -1, NULL); // Free memory. if (writer) xmlFreeTextWriter(writer); if (buffer) xmlBufferFree(buffer); }
bool XmlWriter::FlushWriter() { return (xmlTextWriterFlush(libxml_stuff->writer) != -1); }
int XmlWriter::close() { int rc = xmlTextWriterEndDocument(m_writer); xmlTextWriterFlush(m_writer); return rc; }
int MwsXmlResponseFormatter::writeData(const GenericAnswer* ans, FILE* output) const { const MwsAnswset& answerSet = *((const MwsAnswset*)ans); xmlOutputBuffer* outPtr; xmlTextWriter* writerPtr; size_t qvarNr; int ret; unsigned int i; LocalContext ctxt; // Initializing values outPtr = nullptr; writerPtr = nullptr; ret = -1; qvarNr = answerSet.qvarNames.size(); ctxt.file = output; ctxt.total_bytes_written = 0; if ((outPtr = xmlOutputBufferCreateIO(fileXmlOutputWriteCallback, nullptr, &ctxt, nullptr)) == nullptr) { PRINT_WARN("Error while creating the OutputBuffer\n"); } else if ((writerPtr = xmlNewTextWriter(outPtr)) == nullptr) { PRINT_WARN("Error while creating the TextWriter\n"); } else if ((ret = xmlTextWriterStartDocument(writerPtr, // xmlTextWriter nullptr, // XML version ("1.0") nullptr, // Encoding ("UTF-8") nullptr)) // Standalone ("yes") == -1) { PRINT_WARN("Error at xmlTextWriterStartDocument\n"); } else if ((ret = xmlTextWriterWriteComment( writerPtr, BAD_CAST "MwsAnswset generated by " MWS_BUILD)) == -1) { PRINT_WARN("Error at xmlTextWriterStartDocument\n"); } else if ((ret = xmlTextWriterStartElement( writerPtr, BAD_CAST MWSANSWSET_MAIN_NAME)) == -1) { PRINT_WARN("Error at xmlTextWriterStartElement\n"); } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST "xmlns:mws", BAD_CAST "http://www.mathweb.org/mws/ns")) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST "size", BAD_CAST std::to_string(answerSet.answers.size()) .c_str())) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST "total", BAD_CAST std::to_string(answerSet.total).c_str())) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); } else { for (auto& answer : answerSet.answers) { if ((ret = xmlTextWriterStartElement( writerPtr, BAD_CAST MWSANSWSET_ANSW_NAME)) == -1) { PRINT_WARN("Error at xmlTextWriterStartElement\n"); break; } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST MWSANSWSET_URI_NAME, BAD_CAST answer->uri.c_str())) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); break; } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST MWSANSWSET_XPATH_NAME, BAD_CAST answer->xpath.c_str())) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); break; } else { // Writing the substitutions for (i = 0; i < qvarNr; i++) { string qvarXpath = answer->xpath + answerSet.qvarXpaths[i]; if ((ret = xmlTextWriterStartElement( writerPtr, BAD_CAST MWSANSWSET_SUBSTPAIR_NAME)) == -1) { PRINT_WARN("Error at xmlTextWriterStartElement\n"); break; } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST "qvar", BAD_CAST answerSet.qvarNames[i].c_str())) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); break; } else if ((ret = xmlTextWriterWriteAttribute( writerPtr, BAD_CAST "xpath", BAD_CAST qvarXpath.c_str())) == -1) { PRINT_WARN("Error at xmlTextWriterWriteAttribute\n"); break; } else if ((ret = xmlTextWriterEndElement(writerPtr)) == -1) { PRINT_WARN("Error at xmlTextWriterEndElement\n"); break; } } // <data> ... </data> xmlTextWriterWriteElement(writerPtr, BAD_CAST "data", BAD_CAST answer->data.c_str()); } if (ret == -1) { PRINT_WARN("Error while writing xml substpairs\n"); break; } else if ((ret = xmlTextWriterEndElement(writerPtr)) == -1) { PRINT_WARN("Error at xmlTextWriterEndElement\n"); break; } } } if (ret == -1) { PRINT_WARN("Error while writing xml answers\n"); } else if ((ret = xmlTextWriterEndElement(writerPtr)) == -1) { PRINT_WARN("Error at xmlTextWriterEndElement\n"); } else if ((ret = xmlTextWriterEndDocument(writerPtr)) == -1) { PRINT_WARN("Error at xmlTextWriterEndDocument\n"); } else if ((ret = xmlTextWriterFlush(writerPtr)) == -1) { PRINT_WARN("Error at xmlTextWriterFlush\n"); } else { ret = 0; } // Cleaning data if (writerPtr) { // This also cleans the outPtr xmlFreeTextWriter(writerPtr); } else if (outPtr) { xmlOutputBufferClose(outPtr); } if (ret == 0) { return ctxt.total_bytes_written; } else { return ret; } }
void XMLSchema::writeXml(xmlTextWriterPtr w) const { int pos = 0; for (auto di = m_dims.begin(); di != m_dims.end(); ++di, ++pos) { xmlTextWriterStartElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"dimension", NULL); std::ostringstream position; position << (pos + 1); xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"position", NULL, (const xmlChar*)position.str().c_str()); std::ostringstream size; size << Dimension::size(di->m_dimType.m_type); xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"size", NULL, (const xmlChar*)size.str().c_str()); std::string description = Dimension::description(di->m_dimType.m_id); if (description.size()) xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"description", NULL, (const xmlChar*)description.c_str()); XForm xform = di->m_dimType.m_xform; if (xform.nonstandard()) { std::ostringstream out; out.precision(15); out << xform.m_scale.m_val; std::string scale = out.str(); out.str(std::string()); out << xform.m_offset.m_val; std::string offset = out.str(); out << xform.m_scale.m_val; xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar *)"scale", NULL, (const xmlChar *)scale.data()); xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar *)"offset", NULL, (const xmlChar *)offset.data()); } std::string name = di->m_name; if (name.size()) xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"name", NULL, (const xmlChar*)name.c_str()); xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"interpretation", NULL, (const xmlChar*) Dimension::interpretationName(di->m_dimType.m_type).c_str()); xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"active", NULL, (const xmlChar*)"true"); xmlTextWriterEndElement(w); xmlTextWriterFlush(w); } std::ostringstream orientation; if (m_orientation == Orientation::PointMajor) orientation << "point"; if (m_orientation == Orientation::DimensionMajor) orientation << "dimension"; if (!m_metadata.empty()) { addMetadataEntry(w, m_metadata); } xmlTextWriterWriteElementNS(w, (const xmlChar*) "pc", (const xmlChar*)"orientation", NULL, (const xmlChar*)orientation.str().c_str()); xmlTextWriterWriteElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"version", NULL, (const xmlChar*)PDAL_XML_SCHEMA_VERSION); xmlTextWriterEndElement(w); xmlTextWriterFlush(w); }
int writeXmlAnswsetToFd(MwsAnswset* answset, int fd) { #ifdef TRACE_FUNC_CALLS LOG_TRACE_IN; #endif xmlOutputBuffer* outPtr; xmlTextWriter* writerPtr; size_t qvarNr; int ret; unsigned int i; vector<MwsAnsw*>::iterator it; // Initializing values outPtr = NULL; writerPtr = NULL; ret = -1; qvarNr = answset->qvarNames.size(); if (answset == NULL) { fprintf(stderr, "NULL answset passed to writeXmlAnswsetToFd"); } // Creating the xmlOutputBuffer else if ((outPtr = xmlOutputBufferCreateIO(fdXmlOutputWriteCallback, NULL, &fd, NULL)) == NULL) { fprintf(stderr, "Error while creating the OutputBuffer\n"); } // Creating the xmlTextWriter else if ((writerPtr = xmlNewTextWriter(outPtr)) == NULL) { fprintf(stderr, "Error while creating the TextWriter\n"); } else if ((ret = xmlTextWriterStartDocument(writerPtr, // xmlTextWriter NULL, // XML version ("1.0") NULL, // Encoding ("UTF-8") NULL)) // Standalone ("yes") == -1) { fprintf(stderr, "Error at xmlTextWriterStartDocument\n"); } // MWS timestamp comment else if ((ret = xmlTextWriterWriteComment(writerPtr, BAD_CAST "MwsAnswset generated by " __MWSTIMESTAMP__ " ")) == -1) { fprintf(stderr, "Error at xmlTextWriterStartDocument\n"); } // MWS answset else if ((ret = xmlTextWriterStartElement(writerPtr, BAD_CAST MWSANSWSET_MAIN_NAME)) == -1) { fprintf(stderr, "Error at xmlTextWriterStartElement\n"); } // mws namespace else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST "xmlns:mws", BAD_CAST "http://www.mathweb.org/mws/ns")) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); } // attribute size else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST "size", BAD_CAST ToString(answset->answers.size()).c_str())) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); } // attribute total else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST "total", BAD_CAST ToString(answset->total).c_str())) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); } else // Writing the answers { for (it = answset->answers.begin(); it != answset->answers.end(); it++) { if ((ret = xmlTextWriterStartElement(writerPtr, BAD_CAST MWSANSWSET_ANSW_NAME)) == -1) { fprintf(stderr, "Error at xmlTextWriterStartElement\n"); break; } else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST MWSANSWSET_URI_NAME, BAD_CAST (*it)->uri.c_str())) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); break; } else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST MWSANSWSET_XPATH_NAME, BAD_CAST (*it)->xpath.c_str())) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); break; } else { // Writing the substitutions for (i = 0; i < qvarNr; i++) { if ((ret = xmlTextWriterStartElement(writerPtr, BAD_CAST MWSANSWSET_SUBSTPAIR_NAME)) == -1) { fprintf(stderr, "Error at xmlTextWriterStartElement\n"); break; } else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST "qvar", BAD_CAST answset->qvarNames[i].c_str())) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); break; } else if ((ret = xmlTextWriterWriteAttribute(writerPtr, BAD_CAST "xpath", BAD_CAST (*it)->subst.qvarXpaths[i].c_str())) == -1) { fprintf(stderr, "Error at xmlTextWriterWriteAttribute\n"); break; } else if ((ret = xmlTextWriterEndElement(writerPtr)) == -1) { fprintf(stderr, "Error at xmlTextWriterEndElement\n"); break; } } } if (ret == -1) { fprintf(stderr, "Error while writing xml substpairs\n"); break; } else if ((ret = xmlTextWriterEndElement(writerPtr)) == -1) { fprintf(stderr, "Error at xmlTextWriterEndElement\n"); break; } } } if (ret == -1) { fprintf(stderr, "Error while writing xml answers\n"); } else if ((ret = xmlTextWriterEndElement(writerPtr)) == -1) { fprintf(stderr, "Error at xmlTextWriterEndElement\n"); } // Closing the document else if ((ret = xmlTextWriterEndDocument(writerPtr)) == -1) { fprintf(stderr, "Error at xmlTextWriterEndDocument\n"); } // Flushing the buffer else if ((ret = xmlTextWriterFlush(writerPtr)) == -1) { fprintf(stderr, "Error at xmlTextWriterFlush\n"); } // Everything ok else { ret = 0; } // Cleaning data if (writerPtr) { // This also cleans the outPtr xmlFreeTextWriter(writerPtr); } else if (outPtr) { xmlOutputBufferClose(outPtr); } #ifdef TRACE_FUNC_CALLS LOG_TRACE_OUT; #endif return ret; }
void Stylesheet::save () // Saves the stylesheet to its native xml format. { // If no name is given, we work with the template. It can't be saved. if (name.empty()) return; // Start the new xml document. xmlBufferPtr buffer = xmlBufferCreate(); xmlTextWriterPtr writer = xmlNewTextWriterMemory(buffer, 0); xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); xmlTextWriterSetIndent(writer, 1); xmlTextWriterStartElement(writer, BAD_CAST "bibledit-configuration"); // Get the combined information, and write it to the document. for (unsigned int i = 0; i < styles.size(); i++) { StyleV2 * style = styles[i]; // Open a style for the marker xmlTextWriterStartElement(writer, BAD_CAST "style"); xmlTextWriterWriteFormatAttribute (writer, BAD_CAST "marker", "%s", style->marker.c_str()); // Write values. if (!style->name.empty()) { xmlTextWriterStartElement(writer, BAD_CAST "name"); xmlTextWriterWriteFormatString(writer, "%s", style->name.c_str()); xmlTextWriterEndElement(writer); } if (!style->info.empty()) { xmlTextWriterStartElement(writer, BAD_CAST "info"); xmlTextWriterWriteFormatString(writer, "%s", style->info.c_str()); xmlTextWriterEndElement(writer); } xmlTextWriterStartElement(writer, BAD_CAST "type"); xmlTextWriterWriteFormatString(writer, "%d", style->type); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "subtype"); xmlTextWriterWriteFormatString(writer, "%d", style->subtype); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "fontsize"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->fontsize).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "italic"); xmlTextWriterWriteFormatString(writer, "%s", style->italic.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "bold"); xmlTextWriterWriteFormatString(writer, "%s", style->bold.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "underline"); xmlTextWriterWriteFormatString(writer, "%s", style->underline.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "smallcaps"); xmlTextWriterWriteFormatString(writer, "%s", style->smallcaps.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "superscript"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->superscript).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "justification"); xmlTextWriterWriteFormatString(writer, "%s", style->justification.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "spacebefore"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->spacebefore).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "spaceafter"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->spaceafter).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "leftmargin"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->leftmargin).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "rightmargin"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->rightmargin).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "firstlineindent"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->firstlineindent).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "spancolumns"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->spancolumns).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "color"); xmlTextWriterWriteFormatString(writer, "%d", style->color); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "print"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->print).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userbool1"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->userbool1).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userbool2"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->userbool2).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userbool3"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->userbool3).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userint1"); xmlTextWriterWriteFormatString(writer, "%d", style->userint1); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userint2"); xmlTextWriterWriteFormatString(writer, "%d", style->userint2); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userint3"); xmlTextWriterWriteFormatString(writer, "%d", style->userint3); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userstring1"); xmlTextWriterWriteFormatString(writer, "%s", style->userstring1.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userstring2"); xmlTextWriterWriteFormatString(writer, "%s", style->userstring2.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userstring3"); xmlTextWriterWriteFormatString(writer, "%s", style->userstring3.c_str()); xmlTextWriterEndElement(writer); // Close the style. xmlTextWriterEndElement(writer); } // Close document and write it to disk. xmlTextWriterEndDocument(writer); xmlTextWriterFlush(writer); ustring filename = stylesheet_xml_filename (name); g_file_set_contents(filename.c_str(), (const gchar *)buffer->content, -1, NULL); // Free memory. if (writer) xmlFreeTextWriter(writer); if (buffer) xmlBufferFree(buffer); }