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

📄 xmlj_dom.c

📁 gcc的组建
💻 C
📖 第 1 页 / 共 5 页
字号:
  field = (*env)->GetFieldID (env, cls, "type", "I");  type = (*env)->GetIntField (env, self, field);  if (type == 0)    {      xmlNodePtr node;      xmlAttrPtr attr;      jint count;            node = xmljGetNodeID (env, self);      switch (node->type)        {        case XML_ELEMENT_NODE:          attr = node->properties;          for (count = 0; attr != NULL && count < index; count++)            {              attr = attr->next;            }          if (attr == NULL)            {              char msg[1024];              sprintf (msg, "No attribute at index %d\n", (int) index);              xmljThrowException (env, "java/lang/NullPointerException", msg);              return NULL;            }          return xmljGetNodeInstance (env, (xmlNodePtr) attr);        default:          return NULL;        }    }  else    {      xmlDtdPtr dtd;      xmlHashTablePtr hash;      xmljHashScanData *data;      xmlNodePtr ret;      dtd = (xmlDtdPtr) xmljGetNodeID (env, self);      hash = (xmlHashTablePtr) ((type == 1) ? dtd->entities : dtd->notations);      if (hash == NULL)        {          return NULL;        }      data = (xmljHashScanData *) malloc (sizeof (xmljHashScanData));      if (data == NULL)        {          return NULL;        }      data->index = index;      data->count = 0;      data->node = NULL;      xmlHashScan (hash, xmljHashScanner, data);      ret = data->node;      free (data);      return xmljGetNodeInstance (env, ret);    }}JNIEXPORT jint JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_getLength (JNIEnv * env,                                                      jobject self){  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)    {      xmlNodePtr node;      xmlAttrPtr attr;      jint count;            node = xmljGetNodeID (env, self);      switch (node->type)        {        case XML_ELEMENT_NODE:          count = 0;          attr = node->properties;          while (attr != NULL)            {              count++;              attr = attr->next;            }          return count;        default:          return -1;        }    }  else    {      xmlDtdPtr dtd;      xmlHashTablePtr hash;      xmljHashScanData *data;      jint ret;      dtd = (xmlDtdPtr) xmljGetNodeID (env, self);      hash = (xmlHashTablePtr) ((type == 1) ? dtd->entities : dtd->notations);      if (hash == NULL)        {          return 0;        }      data = (xmljHashScanData *) malloc (sizeof (xmljHashScanData));      if (data == NULL)        {          return 0;        }      data->index = -1;      data->count = 0;      data->node = NULL;      xmlHashScan (hash, xmljHashScanner, data);      ret = data->count;      free (data);      return ret;    }}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_getNamedItemNS (JNIEnv * env,                                                           jobject self,                                                           jstring uri,                                                           jstring localName){  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 = xmljGetNamedItemNS (env, self, uri, localName);      return xmljGetNodeInstance (env, (xmlNodePtr) attr);    }  else    {      return NULL;    }}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_setNamedItemNS (JNIEnv * env,                                                           jobject self,                                                           jobject arg){  return Java_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_setNamedItem (env, self,                                                                  arg);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNamedNodeMap_removeNamedItemNS (JNIEnv * env,                                                              jobject self,                                                              jstring uri,                                                              jstring                                                              localName){  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 = xmljGetNamedItemNS (env, self, uri, localName);      if (attr == NULL)        {          xmljThrowDOMException (env, 8, NULL);	/* NOT_FOUND_ERR */          return NULL;        }      else        {          xmlUnlinkNode ((xmlNodePtr) attr);          return xmljGetNodeInstance (env, (xmlNodePtr) attr);        }    }  else    {      return NULL;    }}/* -- GnomeNode -- */JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getNodeName (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  if (node == NULL)    {      return NULL;    }  return xmljNewString (env, node->name);}xmlChar *xmljGetNodeValue (xmlNodePtr node){  /* If not character data, return null */  switch (node->type)    {    case XML_TEXT_NODE:    case XML_CDATA_SECTION_NODE:    case XML_COMMENT_NODE:    case XML_ATTRIBUTE_NODE:      return xmlNodeGetContent (node);    default:      return NULL;    }}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getNodeValue (JNIEnv * env, jobject self){  xmlNodePtr node;  xmlChar *text;  jstring ret;  node = xmljGetNodeID (env, self);  text = xmljGetNodeValue (node);  ret = xmljNewString (env, (const xmlChar *) text);  if (text != NULL)    {      xmlFree (text);    }  return ret;}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_setNodeValue (JNIEnv * env,                                                 jobject self,                                                 jstring nodeValue){  xmlNodePtr node;  const xmlChar *s_nodeValue;  node = xmljGetNodeID (env, self);  /* If not character data, return */  if (node->type != XML_TEXT_NODE &&      node->type != XML_CDATA_SECTION_NODE && node->type != XML_COMMENT_NODE)    return;  s_nodeValue = xmljGetStringChars (env, nodeValue);  xmlNodeSetContent (node, s_nodeValue);}JNIEXPORT jshort JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getNodeType (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  switch (node->type)    {    case XML_DTD_NODE:      return XML_DOCUMENT_TYPE_NODE;    case XML_ATTRIBUTE_DECL:      return XML_ATTRIBUTE_NODE;    case XML_ENTITY_DECL:      return XML_ENTITY_NODE;    default:      return node->type;    }}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getParentNode (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return xmljGetNodeInstance (env, node->parent);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getFirstChild (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return xmljGetNodeInstance (env, node->children);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getLastChild (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return xmljGetNodeInstance (env, node->last);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getPreviousSibling (JNIEnv * env,                                                       jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return xmljGetNodeInstance (env, node->prev);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getNextSibling (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return xmljGetNodeInstance (env, node->next);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getOwnerDocument (JNIEnv * env,                                                     jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return xmljGetNodeInstance (env, (xmlNodePtr) node->doc);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_xmljInsertBefore (JNIEnv * env,                                                     jobject self,                                                     jobject newChild,                                                     jobject refChild){  xmlNodePtr node;  xmlNodePtr newChildNode;  xmlNodePtr refChildNode;  node = xmljGetNodeID (env, self);  newChildNode = xmljGetNodeID (env, newChild);  refChildNode = xmljGetNodeID (env, refChild);  /* Is refChildNode a child of this node? */  if (refChildNode == NULL ||      refChildNode->parent == NULL ||      refChildNode->parent != node)    {      xmljThrowDOMException (env, 8, NULL);	/* NOT_FOUND_ERR */      return NULL;    }  /* Check new child */  xmljValidateChildNode (env, node, newChildNode);  if ((*env)->ExceptionOccurred (env))    {      return NULL;    }  newChildNode = xmlAddPrevSibling (refChildNode, newChildNode);  return xmljGetNodeInstance (env, newChildNode);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_xmljReplaceChild (JNIEnv * env,                                                     jobject self,                                                     jobject newChild,                                                     jobject oldChild){  xmlNodePtr node;  xmlNodePtr newChildNode;  xmlNodePtr oldChildNode;  node = xmljGetNodeID (env, self);  newChildNode = xmljGetNodeID (env, newChild);  oldChildNode = xmljGetNodeID (env, oldChild);  /* Is oldChildNode a child of this node? */  if (oldChildNode == NULL ||      oldChildNode->parent == NULL ||      oldChildNode->parent != node)    {      xmljThrowDOMException (env, 8, NULL);	/* NOT_FOUND_ERR */      return NULL;    }  /* Check new child */  xmljValidateChildNode (env, node, newChildNode);  if ((*env)->ExceptionOccurred (env))    {      return NULL;    }    newChildNode = xmlReplaceNode (oldChildNode, newChildNode);  return xmljGetNodeInstance (env, newChildNode);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_xmljRemoveChild (JNIEnv * env,                                                    jobject self,                                                    jobject oldChild){  xmlNodePtr node;  xmlNodePtr oldChildNode;  node = xmljGetNodeID (env, self);  oldChildNode = xmljGetNodeID (env, oldChild);  if (oldChildNode == NULL ||      oldChildNode->parent == NULL ||      oldChildNode->parent != node)    {      xmljThrowDOMException (env, 8, NULL);	/* NOT_FOUND_ERR */      return NULL;    }  xmlUnlinkNode (oldChildNode);  return oldChild;}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_xmljAppendChild (JNIEnv * env,                                                    jobject self,                                                    jobject newChild){  xmlNodePtr node;  xmlNodePtr newChildNode;  node = xmljGetNodeID (env, self);  newChildNode = xmljGetNodeID (env, newChild);    /* Check new child */  xmljValidateChildNode (env, node, newChildNode);  if ((*env)->ExceptionOccurred (env))    {      return NULL;    }  newChildNode = xmlAddChild (node, newChildNode);  return xmljGetNodeInstance (env, newChildNode);}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_hasChildNodes (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return (node->children != NULL);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_xmljCloneNode (JNIEnv * env,                                                  jobject self, jboolean deep){  xmlNodePtr node;  xmlNodePtr clone;  node = xmljGetNodeID (env, self);  clone = xmlCopyNode (node, deep);  clone->parent = NULL;  clone->doc = node->doc;  return xmljGetNodeInstance (env, clone);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_normalize (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  xmljNormalizeNode (node);}voidxmljNormalizeNode (xmlNodePtr node){  xmlNodePtr cur;

⌨️ 快捷键说明

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