⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlwriter.c.svn-base

📁 这是一个用于解析xml文件的类库。使用这个类库
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
        buf = xmlStrdup(BAD_CAST "xmlns");        if (prefix != NULL) {            buf = xmlStrcat(buf, BAD_CAST ":");            buf = xmlStrcat(buf, prefix);        }        count = xmlTextWriterWriteAttribute(writer, buf, namespaceURI);        xmlFree(buf);        if (count < 0)            return -1;        sum += count;    }    return sum;}/** * xmlTextWriterWriteFormatElement: * @writer:  the xmlTextWriterPtr * @name:  element name * @format:  format string (see printf) * @...:  extra parameters for the format * * Write a formatted xml element. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,                                const xmlChar * name, const char *format,                                ...){    int rc;    va_list ap;    va_start(ap, format);    rc = xmlTextWriterWriteVFormatElement(writer, name, format, ap);    va_end(ap);    return rc;}/** * xmlTextWriterWriteVFormatElement: * @writer:  the xmlTextWriterPtr * @name:  element name * @format:  format string (see printf) * @argptr:  pointer to the first member of the variable argument list. * * Write a formatted xml element. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,                                 const xmlChar * name, const char *format,                                 va_list argptr){    int rc;    xmlChar *buf;    if (writer == NULL)        return -1;    buf = xmlTextWriterVSprintf(format, argptr);    if (buf == 0)        return 0;    rc = xmlTextWriterWriteElement(writer, name, buf);    xmlFree(buf);    return rc;}/** * xmlTextWriterWriteElement: * @writer:  the xmlTextWriterPtr * @name:  element name * @content:  element content * * Write an xml element. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name,                          const xmlChar * content){    int count;    int sum;    sum = 0;    count = xmlTextWriterStartElement(writer, name);    if (count == -1)        return -1;    sum += count;    count = xmlTextWriterWriteString(writer, content);    if (count == -1)        return -1;    sum += count;    count = xmlTextWriterEndElement(writer);    if (count == -1)        return -1;    sum += count;    return sum;}/** * xmlTextWriterWriteFormatElementNS: * @writer:  the xmlTextWriterPtr * @prefix:  namespace prefix * @name:  element local name * @namespaceURI:  namespace URI * @format:  format string (see printf) * @...:  extra parameters for the format * * Write a formatted xml element with namespace support. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,                                  const xmlChar * prefix,                                  const xmlChar * name,                                  const xmlChar * namespaceURI,                                  const char *format, ...){    int rc;    va_list ap;    va_start(ap, format);    rc = xmlTextWriterWriteVFormatElementNS(writer, prefix, name,                                            namespaceURI, format, ap);    va_end(ap);    return rc;}/** * xmlTextWriterWriteVFormatElementNS: * @writer:  the xmlTextWriterPtr * @prefix:  namespace prefix * @name:  element local name * @namespaceURI:  namespace URI * @format:  format string (see printf) * @argptr:  pointer to the first member of the variable argument list. * * Write a formatted xml element with namespace support. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,                                   const xmlChar * prefix,                                   const xmlChar * name,                                   const xmlChar * namespaceURI,                                   const char *format, va_list argptr){    int rc;    xmlChar *buf;    if (writer == NULL)        return -1;    buf = xmlTextWriterVSprintf(format, argptr);    if (buf == 0)        return 0;    rc = xmlTextWriterWriteElementNS(writer, prefix, name, namespaceURI,                                     buf);    xmlFree(buf);    return rc;}/** * xmlTextWriterWriteElementNS: * @writer:  the xmlTextWriterPtr * @prefix:  namespace prefix * @name:  element local name * @namespaceURI:  namespace URI * @content:  element content * * Write an xml element with namespace support. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteElementNS(xmlTextWriterPtr writer,                            const xmlChar * prefix, const xmlChar * name,                            const xmlChar * namespaceURI,                            const xmlChar * content){    int count;    int sum;    if ((writer == NULL) || (name == NULL) || (*name == '\0'))        return -1;    sum = 0;    count =        xmlTextWriterStartElementNS(writer, prefix, name, namespaceURI);    if (count < 0)        return -1;    sum += count;    count = xmlTextWriterWriteString(writer, content);    if (count == -1)        return -1;    sum += count;    count = xmlTextWriterEndElement(writer);    if (count == -1)        return -1;    sum += count;    return sum;}/** * xmlTextWriterStartPI: * @writer:  the xmlTextWriterPtr * @target:  PI target * * Start an xml PI. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterStartPI(xmlTextWriterPtr writer, const xmlChar * target){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if ((writer == NULL) || (target == NULL) || (*target == '\0'))        return -1;    if (xmlStrcasecmp(target, (const xmlChar *) "xml") == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartPI : target name [Xx][Mm][Ll] is reserved for xml standardization!\n");        return -1;    }    sum = 0;    lk = xmlListFront(writer->nodes);    if (lk != 0) {        p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk);        if (p != 0) {            switch (p->state) {                case XML_TEXTWRITER_ATTRIBUTE:                    count = xmlTextWriterEndAttribute(writer);                    if (count < 0)                        return -1;                    sum += count;                    /* fallthrough */                case XML_TEXTWRITER_NAME:                    count = xmlOutputBufferWriteString(writer->out, ">");                    if (count < 0)                        return -1;                    sum += count;                    p->state = XML_TEXTWRITER_TEXT;                    break;                case XML_TEXTWRITER_NONE:                case XML_TEXTWRITER_TEXT:                case XML_TEXTWRITER_DTD:                    break;                case XML_TEXTWRITER_PI:                case XML_TEXTWRITER_PI_TEXT:                    xmlGenericError(xmlGenericErrorContext,                                    "xmlTextWriterStartPI : nested PI!\n");                    return -1;                default:                    return -1;            }        }    }    p = (xmlTextWriterStackEntry *)        xmlMalloc(sizeof(xmlTextWriterStackEntry));    if (p == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartPI : out of memory!\n");        return -1;    }    p->name = xmlStrdup(target);    if (p->name == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartPI : out of memory!\n");        xmlFree(p);        return -1;    }    p->state = XML_TEXTWRITER_PI;    xmlListPushFront(writer->nodes, p);    count = xmlOutputBufferWriteString(writer->out, "<?");    if (count < 0)        return -1;    sum += count;    count =        xmlOutputBufferWriteString(writer->out, (const char *) p->name);    if (count < 0)        return -1;    sum += count;    return sum;}/** * xmlTextWriterEndPI: * @writer:  the xmlTextWriterPtr * * End the current xml PI. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterEndPI(xmlTextWriterPtr writer){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if (writer == NULL)        return -1;    lk = xmlListFront(writer->nodes);    if (lk == 0)        return 0;    p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk);    if (p == 0)        return 0;    sum = 0;    switch (p->state) {        case XML_TEXTWRITER_PI:        case XML_TEXTWRITER_PI_TEXT:            count = xmlOutputBufferWriteString(writer->out, "?>");            if (count < 0)                return -1;            sum += count;            break;        default:            return -1;    }    xmlListPopFront(writer->nodes);    return sum;}/** * xmlTextWriterWriteFormatPI: * @writer:  the xmlTextWriterPtr * @target:  PI target * @format:  format string (see printf) * @...:  extra parameters for the format * * Write a formatted PI. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, const xmlChar * target,                           const char *format, ...){    int rc;    va_list ap;    va_start(ap, format);    rc = xmlTextWriterWriteVFormatPI(writer, target, format, ap);    va_end(ap);    return rc;}/** * xmlTextWriterWriteVFormatPI: * @writer:  the xmlTextWriterPtr * @target:  PI target * @format:  format string (see printf) * @argptr:  pointer to the first member of the variable argument list. * * Write a formatted xml PI. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,                            const xmlChar * target, const char *format,                            va_list argptr){    int rc;    xmlChar *buf;    if (writer == NULL)        return -1;    buf = xmlTextWriterVSprintf(format, argptr);    if (buf == 0)        return 0;    rc = xmlTextWriterWritePI(writer, target, buf);    xmlFree(buf);    return rc;}/** * xmlTextWriterWritePI: * @writer:  the xmlTextWriterPtr * @target:  PI target * @content:  PI content * * Write an xml PI. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWritePI(xmlTextWriterPtr writer, const xmlChar * target,                     const xmlChar * content){    int count;    int sum;    sum = 0;    count = xmlTextWriterStartPI(writer, target);    if (count == -1)        return -1;    sum += count;    if (content != 0) {        count = xmlTextWriterWriteString(writer, content);        if (count == -1)            return -1;        sum += count;    }    count = xmlTextWriterEndPI(writer);    if (count == -1)        return -1;    sum += count;    return sum;}/** * xmlTextWriterStartCDATA: * @writer:  the xmlTextWriterPtr * * Start an xml CDATA section. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterStartCDATA(xmlTextWriterPtr writer){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if (writer == NULL)        return -1;    sum = 0;    lk = xmlListFront(writer->nodes);    if (lk != 0) {        p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk);        if (p != 0) {            switch (p->state) {                case XML_TEXTWRITER_NONE:                case XML_TEXTWRITER_PI:                case XML_TEXTWRITER_PI_TEXT:                    break;                case XML_TEXTWRITER_ATTRIBUTE:                    count = xmlTextWriterEndAttribute(writer);                    if (count < 0)                        return -1;                    sum += count;                    /* fallthrough */                case XML_TEXTWRITER_NAME:                    count = xmlOutputBufferWriteString(writer->out, ">");                    if (count < 0)                        return -1;                    sum += count;                    p->state = XML_TEXTWRITER_TEXT;                    break;                case XML_TEXTWRITER_CDATA:                    xmlGenericError(xmlGenericErrorContext,                                    "xmlTextWriterStartCDATA : CDATA not allowed in

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -