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

📄 xmlwriter.c.svn-base

📁 这是一个用于解析xml文件的类库。使用这个类库
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
            xmlOutputBufferWriteString(writer->out,                                       writer->out->encoder->name);        if (count < 0)            return -1;        sum += count;        count = xmlOutputBufferWrite(writer->out, 1, &writer->qchar);        if (count < 0)            return -1;        sum += count;    }    if (standalone != 0) {        count = xmlOutputBufferWriteString(writer->out, " standalone=");        if (count < 0)            return -1;        sum += count;        count = xmlOutputBufferWrite(writer->out, 1, &writer->qchar);        if (count < 0)            return -1;        sum += count;        count = xmlOutputBufferWriteString(writer->out, standalone);        if (count < 0)            return -1;        sum += count;        count = xmlOutputBufferWrite(writer->out, 1, &writer->qchar);        if (count < 0)            return -1;        sum += count;    }    count = xmlOutputBufferWriteString(writer->out, "?>\n");    if (count < 0)        return -1;    sum += count;    return sum;}/** * xmlTextWriterEndDocument: * @writer:  the xmlTextWriterPtr * * End an xml document. All open elements are closed * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterEndDocument(xmlTextWriterPtr writer){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if (writer == NULL) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterEndDocument : invalid writer!\n");        return -1;    }    sum = 0;    while ((lk = xmlListFront(writer->nodes)) != NULL) {        p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk);        if (p == 0)            break;        switch (p->state) {            case XML_TEXTWRITER_NAME:            case XML_TEXTWRITER_ATTRIBUTE:            case XML_TEXTWRITER_TEXT:                count = xmlTextWriterEndElement(writer);                if (count < 0)                    return -1;                sum += count;                break;            case XML_TEXTWRITER_PI:            case XML_TEXTWRITER_PI_TEXT:                count = xmlTextWriterEndPI(writer);                if (count < 0)                    return -1;                sum += count;                break;            case XML_TEXTWRITER_CDATA:                count = xmlTextWriterEndCDATA(writer);                if (count < 0)                    return -1;                sum += count;                break;            case XML_TEXTWRITER_DTD:            case XML_TEXTWRITER_DTD_TEXT:            case XML_TEXTWRITER_DTD_ELEM:            case XML_TEXTWRITER_DTD_ELEM_TEXT:            case XML_TEXTWRITER_DTD_ATTL:            case XML_TEXTWRITER_DTD_ATTL_TEXT:            case XML_TEXTWRITER_DTD_ENTY:            case XML_TEXTWRITER_DTD_ENTY_TEXT:            case XML_TEXTWRITER_DTD_PENT:                count = xmlTextWriterEndDTD(writer);                if (count < 0)                    return -1;                sum += count;                break;            case XML_TEXTWRITER_COMMENT:                count = xmlTextWriterEndComment(writer);                if (count < 0)                    return -1;                sum += count;                break;            default:                break;        }    }    if (!writer->indent) {        count = xmlOutputBufferWriteString(writer->out, "\n");        if (count < 0)            return -1;        sum += count;    }    return sum;}/** * xmlTextWriterStartComment: * @writer:  the xmlTextWriterPtr * * Start an xml comment. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterStartComment(xmlTextWriterPtr writer){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if (writer == NULL) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartComment : invalid writer!\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_TEXT:                case XML_TEXTWRITER_NONE:                    break;                case XML_TEXTWRITER_NAME:                    count = xmlOutputBufferWriteString(writer->out, ">");                    if (count < 0)                        return -1;                    sum += count;                    if (writer->indent) {                        count =                            xmlOutputBufferWriteString(writer->out, "\n");                        if (count < 0)                            return -1;                        sum += count;                    }                    p->state = XML_TEXTWRITER_TEXT;                    break;                default:                    return -1;            }        }    }    p = (xmlTextWriterStackEntry *)        xmlMalloc(sizeof(xmlTextWriterStackEntry));    if (p == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartElement : out of memory!\n");        return -1;    }    p->name = 0;    p->state = XML_TEXTWRITER_COMMENT;    xmlListPushFront(writer->nodes, p);    if (writer->indent) {        count = xmlTextWriterWriteIndent(writer);        if (count < 0)            return -1;        sum += count;    }    count = xmlOutputBufferWriteString(writer->out, "<!--");    if (count < 0)        return -1;    sum += count;    return sum;}/** * xmlTextWriterEndComment: * @writer:  the xmlTextWriterPtr * * End the current xml coment. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterEndComment(xmlTextWriterPtr writer){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if (writer == NULL) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterEndComment : invalid writer!\n");        return -1;    }    lk = xmlListFront(writer->nodes);    if (lk == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterEndComment : not allowed in this context!\n");        return -1;    }    p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk);    if (p == 0)        return -1;    sum = 0;    switch (p->state) {        case XML_TEXTWRITER_COMMENT:            count = xmlOutputBufferWriteString(writer->out, "-->");            if (count < 0)                return -1;            sum += count;            break;        default:            return -1;    }    if (writer->indent) {        count = xmlOutputBufferWriteString(writer->out, "\n");        if (count < 0)            return -1;        sum += count;    }    xmlListPopFront(writer->nodes);    return sum;}/** * xmlTextWriterWriteFormatComment: * @writer:  the xmlTextWriterPtr * @format:  format string (see printf) * @...:  extra parameters for the format * * Write an xml comment. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteFormatComment(xmlTextWriterPtr writer,                                const char *format, ...){    int rc;    va_list ap;    va_start(ap, format);    rc = xmlTextWriterWriteVFormatComment(writer, format, ap);    va_end(ap);    return rc;}/** * xmlTextWriterWriteVFormatComment: * @writer:  the xmlTextWriterPtr * @format:  format string (see printf) * @argptr:  pointer to the first member of the variable argument list. * * Write an xml comment. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,                                 const char *format, va_list argptr){    int rc;    xmlChar *buf;    if (writer == NULL) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterWriteVFormatComment : invalid writer!\n");        return -1;    }    buf = xmlTextWriterVSprintf(format, argptr);    if (buf == 0)        return 0;    rc = xmlTextWriterWriteComment(writer, buf);    xmlFree(buf);    return rc;}/** * xmlTextWriterWriteComment: * @writer:  the xmlTextWriterPtr * @content:  comment string * * Write an xml comment. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterWriteComment(xmlTextWriterPtr writer, const xmlChar * content){    int count;    int sum;    sum = 0;    count = xmlTextWriterStartComment(writer);    if (count < 0)        return -1;    sum += count;    count = xmlTextWriterWriteString(writer, content);    if (count < 0)        return -1;    sum += count;    count = xmlTextWriterEndComment(writer);    if (count < 0)        return -1;    sum += count;    return sum;}/** * xmlTextWriterStartElement: * @writer:  the xmlTextWriterPtr * @name:  element name * * Start an xml element. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterStartElement(xmlTextWriterPtr writer, const xmlChar * name){    int count;    int sum;    xmlLinkPtr lk;    xmlTextWriterStackEntry *p;    if ((writer == NULL) || (name == NULL) || (*name == '\0'))        return -1;    sum = 0;    lk = xmlListFront(writer->nodes);    if (lk != 0) {        p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk);        if (p != 0) {            switch (p->state) {                case XML_TEXTWRITER_PI:                case XML_TEXTWRITER_PI_TEXT:                    return -1;                case XML_TEXTWRITER_NONE:                    break;                case XML_TEXTWRITER_NAME:                    count = xmlOutputBufferWriteString(writer->out, ">");                    if (count < 0)                        return -1;                    sum += count;                    if (writer->indent)                        count =                            xmlOutputBufferWriteString(writer->out, "\n");                    p->state = XML_TEXTWRITER_TEXT;                    break;                default:                    break;            }        }    }    p = (xmlTextWriterStackEntry *)        xmlMalloc(sizeof(xmlTextWriterStackEntry));    if (p == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartElement : out of memory!\n");        return -1;    }    p->name = xmlStrdup(name);    if (p->name == 0) {        xmlGenericError(xmlGenericErrorContext,                        "xmlTextWriterStartElement : out of memory!\n");        xmlFree(p);        return -1;    }    p->state = XML_TEXTWRITER_NAME;    xmlListPushFront(writer->nodes, p);    if (writer->indent) {        count = xmlTextWriterWriteIndent(writer);        sum += count;    }    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;}/** * xmlTextWriterStartElementNS: * @writer:  the xmlTextWriterPtr * @prefix:  namespace prefix or NULL * @name:  element local name * @namespaceURI:  namespace URI or NULL * * Start an xml element with namespace support. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterStartElementNS(xmlTextWriterPtr writer,                            const xmlChar * prefix, const xmlChar * name,                            const xmlChar * namespaceURI){    int count;    int sum;    xmlChar *buf;    if ((writer == NULL) || (name == NULL) || (*name == '\0'))        return -1;    buf = 0;    if (prefix != 0) {        buf = xmlStrdup(prefix);        buf = xmlStrcat(buf, BAD_CAST ":");    }    buf = xmlStrcat(buf, name);    sum = 0;    count = xmlTextWriterStartElement(writer, buf);    xmlFree(buf);    if (count < 0)        return -1;    sum += count;    if (namespaceURI != 0) {        buf = xmlStrdup(BAD_CAST "xmlns");        if (prefix != 0) {            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;}/** * xmlTextWriterEndElement: * @writer:  the xmlTextWriterPtr * * End the current xml element. * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */intxmlTextWriterEndElement(xmlTextWriterPtr writer){

⌨️ 快捷键说明

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