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

📄 xmlj_dom.c

📁 gcc的组建
💻 C
📖 第 1 页 / 共 5 页
字号:
  xmlNodePtr last = NULL;  cur = node->children;  while (cur != NULL)    {      switch (cur->type)        {        case XML_CDATA_SECTION_NODE:        case XML_TEXT_NODE:          if (xmlIsBlankNode (cur))            {              xmlNodePtr next = cur->next;              xmlUnlinkNode (cur);              xmlFreeNode (cur);              cur = next;              continue;            }          if (last != NULL)            {              last = xmlTextMerge (last, cur);              xmlUnlinkNode (cur);              xmlFreeNode (cur);              cur = last;            }          else            {              last = cur;            }          break;        default:          last = NULL;          xmljNormalizeNode (cur);        }      cur = cur->next;    }}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getNamespaceURI (JNIEnv * env,                                                    jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  if (node->type != XML_ELEMENT_NODE &&      node->type != XML_ATTRIBUTE_NODE)    {      return NULL;    }  if (node->ns == NULL)    {      return NULL;    }  return xmljNewString (env, node->ns->href);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getPrefix (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  if (node->type != XML_ELEMENT_NODE &&      node->type != XML_ATTRIBUTE_NODE)    {      return NULL;    }  if (node->ns == NULL)    {      return NULL;    }  return xmljNewString (env, node->ns->prefix);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_setPrefix (JNIEnv * env,                                              jobject self, jstring prefix){  xmlNodePtr node;  const xmlChar *s_prefix;  s_prefix = xmljGetStringChars (env, prefix);  if (xmlValidateName (s_prefix, 0))    {      xmljThrowDOMException (env, 5, NULL);	/* INVALID_CHARACTER_ERR */    }  node = xmljGetNodeID (env, self);  if (node->type != XML_ELEMENT_NODE &&      node->type != XML_ATTRIBUTE_NODE)    {      xmljThrowDOMException (env, 3, NULL);	/* HIERARCHY_REQUEST_ERR */      return;    }  if (node->ns == NULL)    {      xmljThrowDOMException (env, 14, NULL);	/* NAMESPACE_ERR */      return;    }  node->ns->prefix = s_prefix;}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getLocalName (JNIEnv * env, jobject self){  xmlNodePtr node;  int *len;  jstring ret;  node = xmljGetNodeID (env, self);  if (node->name == NULL)    {      return NULL;    }  len = (int *) malloc (sizeof (int));  if (xmlSplitQName3 (node->name, len) != NULL)    {      ret = xmljNewString (env, node->name + (*len));    }  else    {      ret = xmljNewString (env, node->name);    }  free (len);  return ret;}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_hasAttributes (JNIEnv * env, jobject self){  xmlNodePtr node;  node = xmljGetNodeID (env, self);  return (node->properties != NULL);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_getBaseURI (JNIEnv * env, jobject self){  xmlNodePtr node;  xmlChar *baseURI;  jstring ret;    node = xmljGetNodeID (env, self);  baseURI = xmlNodeGetBase (node->doc, node);  ret = xmljNewString (env, (const xmlChar *) baseURI);  if (baseURI != NULL)    {      xmlFree (baseURI);    }  return ret;}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_lookupPrefix (JNIEnv * env, jobject self,                                                 jstring namespaceURI){  xmlNodePtr node;  xmlNsPtr ns;  xmlDocPtr doc;  const xmlChar *s_uri;    node = xmljGetNodeID (env, self);  doc = node->doc;  /* If this is a document node, search from the root element */  if (node->type == XML_DOCUMENT_NODE)    {      doc = (xmlDocPtr) node;      node = xmlDocGetRootElement (doc);    }  s_uri = xmljGetStringChars (env, namespaceURI);  ns = xmlSearchNsByHref (doc, node, s_uri);  xmlFree ((xmlChar *) s_uri);  if (ns == NULL)    {      return NULL;    }  return xmljNewString (env, ns->prefix);}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_isDefaultNamespace (JNIEnv * env,                                                       jobject self,                                                       jstring namespaceURI){  xmlNodePtr node;  xmlNsPtr ns;  const xmlChar *s_uri;    node = xmljGetNodeID (env, self);  s_uri = xmljGetStringChars (env, namespaceURI);  ns = xmlSearchNsByHref (node->doc, node, s_uri);  xmlFree ((xmlChar *) s_uri);  if (ns == NULL)    {      return 0;    }  return (ns->prefix == NULL || xmlStrlen (ns->prefix) == 0);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_lookupNamespaceURI (JNIEnv * env,                                                       jobject self,                                                       jstring prefix){  xmlNodePtr node;  xmlDocPtr doc;  xmlNsPtr ns;  const xmlChar *s_prefix;    node = xmljGetNodeID (env, self);  doc = node->doc;  /* If this is a document node, search from the root element */  if (node->type == XML_DOCUMENT_NODE)    {      doc = (xmlDocPtr) node;      node = xmlDocGetRootElement (doc);    }  s_prefix = xmljGetStringChars (env, prefix);  ns = xmlSearchNs (doc, node, s_prefix);  xmlFree ((xmlChar *) s_prefix);  if (ns == NULL)    {      return NULL;    }  return xmljNewString (env, ns->href);}JNIEXPORT jint JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_xmljCompareTo (JNIEnv * env,                                                  jobject self,                                                  jobject other){  xmlNodePtr n1, n2, x;  int d1, d2, delta, c;  n1 = xmljGetNodeID (env, self);  n2 = xmljGetNodeID (env, other);  if (n1->doc != n2->doc)    {      return 0;    }  if (n1->type == XML_ATTRIBUTE_NODE || n2->type == XML_ATTRIBUTE_NODE)    {      return 0;    }  d1 = 0;  for (x = n1->parent; x && x->type != XML_DOCUMENT_NODE; x = x->parent)    {      d1++;    }  d2 = 0;  for (x = n2->parent; x && x->type != XML_DOCUMENT_NODE; x = x->parent)    {      d2++;    }  delta = d1 - d2;  while (d1 > d2)    {      n1 = n1->parent;      d1--;    }  while (d2 > d1)    {      n2 = n2->parent;      d2--;    }  c = xmljCompare (n1, n2);  return (c != 0) ? c : delta;}/* Compare at same level */intxmljCompare (xmlNodePtr n1, xmlNodePtr n2){  int c, i1, i2;    if (n1->parent == NULL || n1->type == XML_DOCUMENT_NODE ||      n2->parent == NULL || n2->type == XML_DOCUMENT_NODE ||      n1 == n2)    {      return 0;    }  c = xmljCompare (n1->parent, n2->parent);  if (c != 0)    {      return c;    }  i1 = 0;  for (n1 = n1->prev; n1; n1 = n1->prev)    {      i1++;    }  i2 = 0;  for (n2 = n2->prev; n2; n2 = n2->prev)    {      i2++;    }  return i1 - i2;}intxmljIsEqualNodeList (xmlNodePtr node1, xmlNodePtr node2){  while (node1 != NULL)    {      if (!xmljIsEqualNode (node1, node2))        {          return 0;        }      node1 = node1->next;      node2 = node2->next;    }  return 1;}intxmljIsEqualNode (xmlNodePtr node1, xmlNodePtr node2){  const xmlChar *val1;  const xmlChar *val2;    if (node1 == node2)    {      return 1;    }  if (node1 == NULL || node2 == NULL)    {      return 0;    }  /* Check node type */  if (node1->type != node2->type)    {      return 0;    }  /* Check node name */  if (!xmlStrEqual (node1->name, node2->name))    {      return 0;    }  /* Check node namespace */  if (node1->type == XML_ELEMENT_NODE ||      node1->type == XML_ATTRIBUTE_NODE)    {      xmlNsPtr ns1, ns2;            ns1 = node1->ns;      if (ns1 != NULL)        {          ns2 = node2->ns;          if (ns2 == NULL)            {              return 0;            }          val1 = ns1->href;          val2 = ns2->href;          if (!xmlStrEqual (val1, val2))            {              return 0;            }        }    }  /* Check node value */  val1 = xmljGetNodeValue (node1);  val2 = xmljGetNodeValue (node2);  if (!xmlStrEqual (val1, val2))    {      return 0;    }  /* Check attributes */  if (node1->type == XML_ELEMENT_NODE &&      !xmljIsEqualNodeList ((xmlNodePtr) node1->properties,                            (xmlNodePtr) node2->properties))    {      return 0;    }  /* Check doctype */  if (node1->type == XML_DOCUMENT_NODE)    {      xmlDocPtr doc1 = (xmlDocPtr) node1;      xmlDocPtr doc2 = (xmlDocPtr) node2;      if (!xmljIsEqualNode ((xmlNodePtr) doc1->intSubset,                            (xmlNodePtr) doc2->intSubset) ||          !xmljIsEqualNode ((xmlNodePtr) doc1->extSubset,                            (xmlNodePtr) doc2->extSubset))        {          return 0;        }    }  /* Check child nodes */  if (!xmljIsEqualNodeList (node1->children, node2->children))    {      return 0;    }  return 1;}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeNode_isEqualNode (JNIEnv * env,                                                jobject self,                                                jobject arg){  xmlNodePtr node1;  xmlNodePtr node2;  node1 = xmljGetNodeID (env, self);  node2 = xmljGetNodeID (env, arg);  return xmljIsEqualNode (node1, node2);}/* -- GnomeNodeList -- */JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeNodeList_item (JNIEnv * env,                                             jobject self, jint index){  xmlNodePtr node;  jint count;  node = xmljGetNodeID (env, self);  node = node->children;  count = 0;  for (count = 0; node != NULL && count < index; count++)    {      node = node->next;    }  return xmljGetNodeInstance (env, node);}JNIEXPORT jint JNICALLJava_gnu_xml_libxmlj_dom_GnomeNodeList_getLength (JNIEnv * env, jobject self){  xmlNodePtr node;  jint count;  node = xmljGetNodeID (env, self);  count = 0;  node = node->children;  while (node != NULL)    {      count++;      node = node->next;    }  return count;}/* -- GnomeNotation -- */JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNotation_getPublicId (JNIEnv * env,                                                    jobject self){  xmlNotationPtr notation;  notation = (xmlNotationPtr) xmljGetNodeID (env, self);  if (notation->PublicID == NULL)    {      return NULL;    }  return xmljNewString (env, notation->PublicID);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeNotation_getSystemId (JNIEnv * env,                                                    jobject self){  xmlNotationPtr notation;  notation = (xmlNotationPtr) xmljGetNodeID (env, self);  if (notation->SystemID == NULL)    {      return NULL;    }  return xmljNewString (env, notation->SystemID);}/* -- GnomeProcessingInstruction -- */JNIEXPORT jstring JNICA

⌨️ 快捷键说明

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