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

📄 xmlj_dom.c

📁 gcc的组建
💻 C
📖 第 1 页 / 共 5 页
字号:
JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_getAttribute (JNIEnv * env,                                                    jobject self,                                                    jstring name){  xmlNodePtr node;  const xmlChar *s_name;  const xmlChar *s_value;    node = xmljGetNodeID (env, self);  s_name = xmljGetStringChars (env, name);  s_value = xmlGetProp (node, s_name);  xmlFree ((xmlChar *) s_name);  return (s_value == NULL) ?    xmljNewString (env, BAD_CAST "") :    xmljNewString (env, s_value);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_setAttribute (JNIEnv * env,                                                    jobject self,                                                    jstring name,                                                    jstring value){  xmlNodePtr node;  const xmlChar *s_name;  const xmlChar *s_value;    node = xmljGetNodeID (env, self);  s_name = xmljGetStringChars (env, name);  if (xmlValidateName (s_name, 0))    {      xmljThrowDOMException (env, 5, NULL); /* INVALID_CHARACTER_ERR */      return;    }  s_value = xmljGetStringChars (env, value);  xmlSetProp (node, s_name, s_value);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_getAttributeNode (JNIEnv * env,                                                        jobject self,                                                        jstring name){  xmlNodePtr node;  const xmlChar *s_name;  xmlAttrPtr attr;  node = xmljGetNodeID (env, self);  s_name = xmljGetStringChars (env, name);  attr = xmlHasProp (node, s_name);  if (attr == NULL)    {      return NULL;    }  xmlFree ((xmlChar *) s_name);  return xmljGetNodeInstance (env, (xmlNodePtr) attr);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_setAttributeNode (JNIEnv * env,                                                        jobject self,                                                        jobject newAttr){  xmlNodePtr node;  xmlAttrPtr new_attr;  xmlAttrPtr old_attr;  node = xmljGetNodeID (env, self);  new_attr = (xmlAttrPtr) xmljGetNodeID (env, newAttr);  if (new_attr->parent != NULL)    {      xmljThrowDOMException (env, 10, NULL); /* INUSE_ATTRIBUTE_ERR */      return NULL;    }  if (new_attr->doc != node->doc)    {      xmljThrowDOMException (env, 4, NULL); /* WRONG_DOCUMENT_ERR */      return NULL;    }  old_attr = xmlHasProp (node, new_attr->name);  if (old_attr)    {      xmlUnlinkNode ((xmlNodePtr) old_attr);    }  xmljAddAttribute (node, new_attr);  return xmljGetNodeInstance (env, (xmlNodePtr) old_attr);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_removeAttributeNode (JNIEnv * env,                                                           jobject self							   __attribute__ ((__unused__)),                                                           jobject oldAttr){  xmlNodePtr attr;  attr = xmljGetNodeID (env, oldAttr);  xmlUnlinkNode (attr);  return oldAttr;}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_getAttributeNS (JNIEnv * env,                                                      jobject self,                                                      jstring uri,                                                      jstring localName){  xmlNodePtr node;  const xmlChar *s_uri;  const xmlChar *s_localName;  const xmlChar *s_value;  node = xmljGetNodeID (env, self);  s_localName = xmljGetStringChars (env, localName);  if (uri == NULL)    {      s_value = xmlGetNoNsProp (node, s_localName);    }  else    {      s_uri = xmljGetStringChars (env, uri);      s_value = xmlGetNsProp (node, s_localName, s_uri);      xmlFree ((xmlChar *) s_uri);    }  xmlFree ((xmlChar *) s_localName);  return (s_value == NULL) ?    xmljNewString (env, BAD_CAST "") :    xmljNewString (env, s_value);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_setAttributeNS (JNIEnv * env,                                                      jobject self,                                                      jstring uri,                                                      jstring qName,                                                      jstring value){  xmlNodePtr node;  xmlNsPtr ns;  const xmlChar *s_uri;  const xmlChar *s_qName;  const xmlChar *s_prefix;  const xmlChar *s_localName;  const xmlChar *s_value;  node = xmljGetNodeID (env, self);  s_qName = xmljGetStringChars (env, qName);  if (xmlValidateQName (s_qName, 0))    {      xmljThrowDOMException (env, 5, NULL); /* INVALID_CHARACTER_ERR */      return;    }  s_value = xmljGetStringChars (env, value);  if (uri == NULL)    {      xmlSetProp (node, s_qName, s_value);    }  else    {      s_prefix = xmljGetPrefix (s_qName);      s_localName = xmljGetLocalName (s_qName);      s_uri = xmljGetStringChars (env, uri);      ns = xmlNewNs (node, s_uri, s_prefix);      xmlSetNsProp (node, ns, s_localName, s_value);    }}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_getAttributeNodeNS (JNIEnv * env,                                                          jobject self,                                                          jstring uri,                                                          jstring localName){  xmlNodePtr node;  xmlAttrPtr attr;  const xmlChar *s_uri;  const xmlChar *s_localName;  node = xmljGetNodeID (env, self);  attr = node->properties;  s_uri = xmljGetStringChars (env, uri);  s_localName = xmljGetStringChars (env, localName);  while (attr != NULL)    {      if (uri == NULL)        {          if (xmljMatch (s_localName, (xmlNodePtr) attr))            break;        }      else        {          if (xmljMatchNS (s_uri, s_localName, (xmlNodePtr) attr))            break;        }      attr = attr->next;    }  xmlFree ((xmlChar *) s_uri);  xmlFree ((xmlChar *) s_localName);  return xmljGetNodeInstance (env, (xmlNodePtr) attr);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_setAttributeNodeNS (JNIEnv * env,                                                          jobject self,                                                          jobject newAttr){  xmlNodePtr node;  xmlAttrPtr new_attr;  xmlAttrPtr old_attr;  const xmlChar *uri;  node = xmljGetNodeID (env, self);  new_attr = (xmlAttrPtr) xmljGetNodeID (env, newAttr);  if (new_attr->parent != NULL)    {      xmljThrowDOMException (env, 10, NULL); /* INUSE_ATTRIBUTE_ERR */      return NULL;    }  if (new_attr->doc != node->doc)    {      xmljThrowDOMException (env, 4, NULL); /* WRONG_DOCUMENT_ERR */      return NULL;    }  uri = (new_attr->ns != NULL) ? new_attr->ns->href : NULL;  old_attr = xmlHasNsProp (node, new_attr->name, uri);  if (old_attr)    {      xmlUnlinkNode ((xmlNodePtr) old_attr);    }  xmljAddAttribute (node, new_attr);  return xmljGetNodeInstance (env, (xmlNodePtr) old_attr);}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_hasAttribute (JNIEnv * env,                                                    jobject self,                                                    jstring name){  xmlNodePtr node;  const xmlChar *s_name;  const xmlChar *s_value;    node = xmljGetNodeID (env, self);  s_name = xmljGetStringChars (env, name);  s_value = xmlGetProp (node, s_name);  xmlFree ((xmlChar *) s_name);  return (s_value != NULL);}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeElement_hasAttributeNS (JNIEnv * env,                                                      jobject self,                                                      jstring uri,                                                      jstring localName){  xmlNodePtr node;  const xmlChar *s_uri;  const xmlChar *s_localName;  const xmlChar *s_value;  node = xmljGetNodeID (env, self);  s_localName = xmljGetStringChars (env, localName);  if (uri == NULL)    {      s_value = xmlGetNoNsProp (node, s_localName);    }  else    {      s_uri = xmljGetStringChars (env, uri);      s_value = xmlGetNsProp (node, s_localName, s_uri);      xmlFree ((xmlChar *) s_uri);    }  xmlFree ((xmlChar *) s_localName);  return (s_value != NULL);}/* -- GnomeEntity -- */JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeEntity_getPublicId (JNIEnv * env, jobject self){  xmlEntityPtr entity;  entity = (xmlEntityPtr) xmljGetNodeID (env, self);  return xmljNewString (env, entity->ExternalID);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeEntity_getSystemId (JNIEnv * env, jobject self){  xmlEntityPtr entity;  entity = (xmlEntityPtr) xmljGetNodeID (env, self);  return xmljNewString (env, entity->SystemID);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeEntity_getNotationName (JNIEnv * env,                                                      jobject self						      __attribute__ ((__unused__))){  /* TODO */  xmljThrowDOMException (env, 9, NULL); /* NOT_SUPPORTED_ERR */  return NULL;}/* -- GnomeNamedNodeMap -- */JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_getNamedItem (JNIEnv * env,                                                         jobject self,                                                         jstring name){  jclass cls;  jfieldID field;  jint type;  cls = (*env)->GetObjectClass (env, self);  field = (*env)->GetFieldID (env, cls, "type", "I");  type = (*env)->GetIntField (env, self, field);  if (type == 0)    {      xmlAttrPtr attr;            attr = xmljGetNamedItem (env, self, name);      return xmljGetNodeInstance (env, (xmlNodePtr) attr);    }  else    {      xmlDtdPtr dtd;      xmlHashTablePtr hash;      const xmlChar *s_name;      xmlNodePtr ret;      dtd = (xmlDtdPtr) xmljGetNodeID (env, self);      hash = (xmlHashTablePtr) ((type == 1) ? dtd->entities : dtd->notations);      if (hash == NULL)        {          return NULL;        }      s_name = xmljGetStringChars (env, name);      ret = (xmlNodePtr) xmlHashLookup (hash, s_name);      xmlFree ((xmlChar *) s_name);      return xmljGetNodeInstance (env, ret);    }}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_setNamedItem (JNIEnv * env,                                                         jobject self,                                                         jobject arg){  jclass cls;  jfieldID field;  jint type;  xmlNodePtr node;  xmlNodePtr argNode;  cls = (*env)->GetObjectClass (env, self);  field = (*env)->GetFieldID (env, cls, "type", "I");  type = (*env)->GetIntField (env, self, field);  node = xmljGetNodeID (env, self);  argNode = xmljGetNodeID (env, arg);  if (argNode->doc != node->doc)    {      xmljThrowDOMException (env, 4, NULL);	/* WRONG_DOCUMENT_ERR */    }  xmljValidateChildNode (env, node, argNode);  if ((*env)->ExceptionOccurred (env))    {      return NULL;    }  if (type == 0)    {      if (argNode->parent != NULL)        {          xmljThrowDOMException (env, 10, NULL);  /* INUSE_ATTRIBUTE_ERR */          return NULL;        }      xmlAddChild (node, argNode);    }  else    {      xmlDtdPtr dtd;      xmlHashTablePtr hash;      dtd = (xmlDtdPtr) xmljGetNodeID (env, self);      hash = (xmlHashTablePtr) ((type == 1) ? dtd->entities : dtd->notations);      if (hash == NULL)        {          hash = xmlHashCreate (10);          if (type == 1)            {              dtd->entities = hash;            }          else            {              dtd->notations = hash;            }        }      xmlHashAddEntry (hash, argNode->name, argNode);    }  return arg;}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_removeNamedItem (JNIEnv * env,                                                            jobject self,                                                            jstring name){  jclass cls;  jfieldID field;  jint type;  cls = (*env)->GetObjectClass (env, self);  field = (*env)->GetFieldID (env, cls, "type", "I");  type = (*env)->GetIntField (env, self, field);  if (type == 0)    {      xmlAttrPtr attr;      attr = xmljGetNamedItem (env, self, name);      if (attr == NULL)        {          xmljThrowDOMException (env, 8, NULL);	/* NOT_FOUND_ERR */          return NULL;        }      xmlUnlinkNode ((xmlNodePtr) attr);      return xmljGetNodeInstance (env, (xmlNodePtr) attr);    }  else    {      xmlDtdPtr dtd;      xmlHashTablePtr hash;      const xmlChar *s_name;      xmlNodePtr ret;      dtd = (xmlDtdPtr) xmljGetNodeID (env, self);      hash = (xmlHashTablePtr) ((type == 1) ? dtd->entities : dtd->notations);      if (hash == NULL)        {          return NULL;        }      s_name = xmljGetStringChars (env, name);      ret = (xmlNodePtr) xmlHashLookup (hash, s_name);      if (ret != NULL)        {          xmlHashRemoveEntry (hash, s_name, NULL);        }      xmlFree ((xmlChar *) s_name);      return xmljGetNodeInstance (env, ret);    }}voidxmljHashScanner (void *payload, void *vdata, xmlChar *name){  xmljHashScanData *data;  data = (xmljHashScanData *) vdata;  if (data->count <= data->index)    {      data->node = (xmlNodePtr) payload;    }  data->count++;}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_item (JNIEnv * env,                                                 jobject self, jint index){  jclass cls;  jfieldID field;  jint type;  cls = (*env)->GetObjectClass (env, self);

⌨️ 快捷键说明

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