📄 xmlj_xpath.c
字号:
JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathResult_getBooleanValue (JNIEnv *env, jobject self){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); return obj->boolval;}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathResult_getSingleNodeValue (JNIEnv *env, jobject self){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); if (obj == NULL) { return NULL; } if (obj->nodesetval == NULL) { return NULL; } if (obj->nodesetval->nodeNr > 0) { return xmljGetNodeInstance (env, obj->nodesetval->nodeTab[0]); } else { return NULL; }}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathResult_getInvalidIteratorState (JNIEnv *env, jobject self){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); return 0; /* TODO */}JNIEXPORT jint JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathResult_getSnapshotLength (JNIEnv *env, jobject self){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); if (obj == NULL) { return -1; } if (obj->nodesetval == NULL) { return -1; } return obj->nodesetval->nodeNr;}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathResult_iterateNext (JNIEnv *env, jobject self){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); return NULL; /* TODO */}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathResult_snapshotItem (JNIEnv *env, jobject self, jint index){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); if (obj == NULL) { return NULL; } if (obj->nodesetval == NULL) { return NULL; } if (obj->nodesetval->nodeNr > 0) { return xmljGetNodeInstance (env, obj->nodesetval->nodeTab[index]); } else { return NULL; }}/* -- GnomeXPathNodeList -- */JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getElementsByTagName (JNIEnv *env, jobject self, jstring name){ return Java_gnu_xml_libxmlj_dom_GnomeElement_getElementsByTagName (env, self, name);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_getElementsByTagName (JNIEnv *env, jobject self, jstring name){ const xmlChar *s_name; const xmlChar *format; xmlChar expr[256]; xmlNodePtr node; xmlXPathContextPtr ctx; xmlXPathObjectPtr eval = NULL; node = xmljGetNodeID (env, self); if (node == NULL) { return NULL; } s_name = xmljGetStringChars (env, name); if (xmlStrEqual (s_name, BAD_CAST "*")) { format = xmlCharStrdup ("descendant-or-self::*[node-type()=1]"); if (xmlStrPrintf (expr, 256, format) == -1) { return NULL; } } else { format = xmlCharStrdup ("descendant-or-self::*[name()='%s']"); if (xmlStrPrintf (expr, 256, format, s_name) == -1) { return NULL; } } xmlFree ((xmlChar *) s_name); ctx = xmljCreateXPathContextPtr (node); if (ctx != NULL) { eval = xmlXPathEval (expr, ctx); xmlXPathFreeContext (ctx); } return xmljGetXPathNodeList (env, eval);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getElementsByTagNameNS (JNIEnv *env, jobject self, jstring uri, jstring localName){ return Java_gnu_xml_libxmlj_dom_GnomeElement_getElementsByTagNameNS (env, self, uri, localName);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_getElementsByTagNameNS (JNIEnv *env, jobject self, jstring uri, jstring localName){ const xmlChar *s_uri; const xmlChar *s_localName; const xmlChar *format; xmlChar expr[256]; xmlNodePtr node; xmlXPathContextPtr ctx; xmlXPathObjectPtr eval = NULL; node = xmljGetNodeID (env, self); if (node == NULL) { return NULL; } s_uri = xmljGetStringChars (env, uri); s_localName = xmljGetStringChars (env, localName); if (uri == NULL) { /* namespace URI is empty */ if (xmlStrEqual (s_localName, BAD_CAST "*")) { format = xmlCharStrdup ("descendant-or-self::*[namespace-uri()='' and node-type()=1]"); if (xmlStrPrintf (expr, 256, format) == -1) { return NULL; } } else { format = xmlCharStrdup ("descendant-or-self::*[namespace-uri()='' and local-name()='%s']"); if (xmlStrPrintf (expr, 256, format, s_localName) == -1) { return NULL; } } } else if (xmlStrEqual (s_uri, BAD_CAST "*")) { /* matches all namespaces */ if (xmlStrEqual (s_localName, BAD_CAST "*")) { format = xmlCharStrdup ("descendant-or-self::*[node-type()=1]"); if (xmlStrPrintf (expr, 256, format) == -1) { return NULL; } } else { format = xmlCharStrdup ("descendant-or-self::*[local-name()='%s']"); if (xmlStrPrintf (expr, 256, format, s_localName) == -1) { return NULL; } } } else { if (xmlStrEqual (s_localName, BAD_CAST "*")) { format = xmlCharStrdup ("descendant-or-self::*[namespace-uri()='%s' and node-type()=1]"); if (xmlStrPrintf (expr, 256, format, s_uri) == -1) { return NULL; } } else { format = xmlCharStrdup ("descendant-or-self::*[namespace-uri()='%s' and local-name()='%s']"); if (xmlStrPrintf (expr, 256, format, s_uri, s_localName) == -1) { return NULL; } } } xmlFree ((xmlChar *) s_uri); xmlFree ((xmlChar *) s_localName); ctx = xmljCreateXPathContextPtr (node); if (ctx != NULL) { eval = xmlXPathEval (expr, ctx); xmlXPathFreeContext (ctx); } return xmljGetXPathNodeList (env, eval);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathNodeList_free (JNIEnv *env, jobject self __attribute__((__unused__)), jobject obj){ xmlXPathFreeObject ((xmlXPathObjectPtr) xmljAsPointer (env, obj));}JNIEXPORT jint JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathNodeList_getLength (JNIEnv *env, jobject self){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); if (obj == NULL) { return 0; } if (obj->nodesetval == NULL) { return 0; } return obj->nodesetval->nodeNr;}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeXPathNodeList_item (JNIEnv *env, jobject self, jint index){ xmlXPathObjectPtr obj; obj = xmljGetXPathObjectID (env, self); if (obj == NULL) { return NULL; } if (obj->nodesetval == NULL) { return NULL; } if (obj->nodesetval->nodeNr > 0) { return xmljGetNodeInstance (env, obj->nodesetval->nodeTab[index]); } else { return NULL; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -