📄 xmlj_sax.c
字号:
j_systemId = xmljNewString (env, systemId); (*env)->CallVoidMethod (env, target, sax->externalEntityDecl, j_name, j_publicId, j_systemId); }}voidxmljSAXNotationDecl (void *vctx, const xmlChar * name, const xmlChar * publicId, const xmlChar * systemId){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; jstring j_name; jstring j_publicId; jstring j_systemId; xmlSAX2NotationDecl (vctx, name, publicId, systemId); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->notationDecl == NULL) { sax->notationDecl = xmljGetMethodID (env, target, "notationDecl", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); if (sax->notationDecl == NULL) { return; } } j_name = xmljNewString (env, name); j_publicId = xmljNewString (env, publicId); j_systemId = xmljNewString (env, systemId); /* Invoke the method */ (*env)->CallVoidMethod (env, target, sax->notationDecl, j_name, j_publicId, j_systemId);}voidxmljSAXAttributeDecl (void *vctx, const xmlChar * elem, const xmlChar * fullName, int type, int def, const xmlChar * defaultValue, xmlEnumerationPtr tree){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; jstring j_eName; jstring j_aName; jstring j_type; jstring j_mode; jstring j_value; xmlSAX2AttributeDecl (vctx, elem, fullName, type, def, defaultValue, tree); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->attributeDecl == NULL) { sax->attributeDecl = xmljGetMethodID (env, target, "attributeDecl", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); if (sax->attributeDecl == NULL) { return; } } j_eName = xmljNewString (env, elem); j_aName = xmljNewString (env, fullName); j_type = xmljAttributeTypeName (env, type); j_mode = xmljAttributeModeName (env, def); j_value = xmljNewString (env, defaultValue); (*env)->CallVoidMethod (env, target, sax->attributeDecl, j_eName, j_aName, j_type, j_mode, j_value);}voidxmljSAXElementDecl (void *vctx, const xmlChar * name, int type, xmlElementContentPtr content){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; jstring j_name; jstring j_model; xmlSAX2ElementDecl (vctx, name, type, content); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->elementDecl == NULL) { sax->elementDecl = xmljGetMethodID (env, target, "elementDecl", "(Ljava/lang/String;Ljava/lang/String;)V"); if (sax->elementDecl == NULL) { return; } } j_name = xmljNewString (env, name); j_model = NULL; /* TODO */ (*env)->CallVoidMethod (env, target, sax->elementDecl, j_name, j_model);}voidxmljSAXUnparsedEntityDecl (void *vctx, const xmlChar * name, const xmlChar * publicId, const xmlChar * systemId, const xmlChar * notationName){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; jstring j_name; jstring j_publicId; jstring j_systemId; jstring j_notationName; xmlSAX2UnparsedEntityDecl (vctx, name, publicId, systemId, notationName); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->unparsedEntityDecl == NULL) { sax->unparsedEntityDecl = xmljGetMethodID (env, target, "unparsedEntityDecl", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); if (sax->unparsedEntityDecl == NULL) { return; } } j_name = xmljNewString (env, name); j_publicId = xmljNewString (env, publicId); j_systemId = xmljNewString (env, systemId); j_notationName = xmljNewString (env, notationName); (*env)->CallVoidMethod (env, target, sax->unparsedEntityDecl, j_name, j_publicId, j_systemId, j_notationName);}voidxmljSAXSetDocumentLocator (void *vctx, xmlSAXLocatorPtr loc){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; xmlSAX2SetDocumentLocator (vctx, loc); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; if (target == NULL) { /* No Java parse context */ return; } /* Update locator on sax context */ sax->loc = loc; if ((*env)->ExceptionOccurred (env)) { return; } if (sax->setDocumentLocator == NULL) { sax->setDocumentLocator = xmljGetMethodID (env, target, "setDocumentLocator", "(Ljava/lang/Object;Ljava/lang/Object;)V"); if (sax->setDocumentLocator == NULL) { return; } } (*env)->CallVoidMethod (env, target, sax->setDocumentLocator, xmljAsField (env, ctx), xmljAsField (env, loc));}voidxmljSAXStartDocument (void *vctx){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; xmlSAX2StartDocument (vctx); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->startDocument == NULL) { sax->startDocument = xmljGetMethodID (env, target, "startDocument", "(Z)V"); if (sax->startDocument == NULL) { return; } } (*env)->CallVoidMethod (env, target, sax->startDocument, ctx->standalone);}voidxmljSAXEndDocument (void *vctx){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; xmlSAX2EndDocument (vctx); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->endDocument == NULL) { sax->endDocument = xmljGetMethodID (env, target, "endDocument", "()V"); if (sax->endDocument == NULL) { return; } } (*env)->CallVoidMethod (env, target, sax->endDocument);}voidxmljSAXStartElement (void *vctx, const xmlChar * name, const xmlChar ** attrs){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; jstring j_name; jobjectArray j_attrs; jstring j_attr; jsize len; xmlSAX2StartElement (vctx, name, attrs); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->startElement == NULL) { sax->startElement = xmljGetMethodID (env, target, "startElement", "(Ljava/lang/String;[Ljava/lang/String;)V"); if (sax->startElement == NULL) { return; } } j_name = xmljNewString (env, name); /* build attributes array */ len = 0; for (len = 0; attrs && attrs[len]; len++) { } if (len) { if (sax->stringClass == NULL) { sax->stringClass = (*env)->FindClass (env, "java/lang/String"); if (sax->stringClass == NULL) { fprintf (stderr, "Can't find java.lang.String class!\n"); return; } } j_attrs = (*env)->NewObjectArray (env, len, sax->stringClass, NULL); if (j_attrs == NULL) { fprintf (stderr, "Can't allocate attributes array!\n"); return; } len = 0; for (len = 0; attrs && attrs[len]; len++) { j_attr = xmljNewString (env, attrs[len]); (*env)->SetObjectArrayElement (env, j_attrs, len, j_attr); } (*env)->CallVoidMethod (env, target, sax->startElement, j_name, j_attrs); (*env)->DeleteLocalRef (env, j_attrs); } else { (*env)->CallVoidMethod (env, target, sax->startElement, j_name, NULL); }}voidxmljSAXEndElement (void *vctx, const xmlChar * name){ xmlParserCtxtPtr ctx; SAXParseContext *sax; JNIEnv *env; jobject target; jstring j_name; xmlSAX2EndElement (vctx, name); ctx = (xmlParserCtxtPtr) vctx; sax = (SAXParseContext *) ctx->_private; env = sax->env; target = sax->obj; xmljCheckWellFormed (ctx); if ((*env)->ExceptionOccurred (env)) { return; } if (sax->endElement == NULL) { sax->endElement = xmljGetMethodID (env, target, "endElement", "(Ljava/lang/String;)V"); if (sax->endElement == NULL) { return; } } j_name = xmljNewString (env, name); (*env)->CallVoidMethod (env, target, sax->endElement, j_name);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -