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

📄 xmlj_dom.c

📁 gcc的组建
💻 C
📖 第 1 页 / 共 5 页
字号:
      xmljThrowDOMException (env, 5, NULL); /* INVALID_CHARACTER_ERR */      return NULL;    }  if (uri != NULL)    {      s_uri = xmljGetStringChars (env, uri);      s_prefix = xmljGetPrefix (s_qName);      s_localName = xmljGetLocalName (s_qName);      ns = xmlNewNs ((xmlNodePtr) doc, s_uri, s_prefix);    }  attr = (xmlNodePtr) xmlNewNsProp ((xmlNodePtr) doc, ns, s_qName, NULL);  attr->parent = NULL;  return xmljGetNodeInstance (env, attr);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_xmljGetElementById (JNIEnv * env,                                                           jobject self,                                                           jstring elementId){  xmlDocPtr doc;  xmlNodePtr ctx, tmp;  xmlAttrPtr attr;  const xmlChar *id;  const xmlChar *val;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  id = xmljGetStringChars (env, elementId);  ctx = xmlDocGetRootElement (doc);  while (ctx && ctx != (xmlNodePtr) doc)    {      if (ctx->type == XML_ELEMENT_NODE)        {          for (attr = ctx->properties; attr;               attr = (xmlAttrPtr) attr->next)            {              if (xmlIsID (doc, ctx, attr))                {                  val = xmlGetProp (ctx, attr->name);                  if (val && xmlStrEqual (id, val))                    {                      return xmljGetNodeInstance (env, ctx);                    }                }            }        }      if (ctx->children)        {          ctx = ctx->children;        }      else        {          tmp = ctx->next;          if (tmp)            {              ctx = tmp;            }          else            {              do                {                  tmp = ctx->parent;                  if (!tmp)                    {                      return NULL;                    }                  ctx = tmp;                  tmp = ctx->next;                }              while (!tmp);              ctx = tmp;            }        }    }  return NULL;}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getInputEncoding (JNIEnv * env,                                                         jobject self){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  if (doc->encoding)    {      return xmljNewString (env, doc->encoding);    }  switch (doc->charset)    {    case XML_CHAR_ENCODING_ASCII:      return xmljNewString (env, BAD_CAST "US-ASCII");    case XML_CHAR_ENCODING_UTF16LE:      return xmljNewString (env, BAD_CAST "UTF-16LE");    case XML_CHAR_ENCODING_UTF16BE:      return xmljNewString (env, BAD_CAST "UTF-16BE");    case XML_CHAR_ENCODING_8859_1:      return xmljNewString (env, BAD_CAST "ISO-8859-1");      /* TODO others */    default:      return xmljNewString (env, BAD_CAST "UTF-8");    }}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getXmlEncoding (JNIEnv * env,                                                       jobject self){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  return (doc->encoding == NULL) ?     xmljNewString (env, BAD_CAST "UTF-8") :    xmljNewString (env, doc->encoding);}JNIEXPORT jboolean JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getXmlStandalone (JNIEnv * env,                                                         jobject self){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  return doc->standalone;}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_setXmlStandalone (JNIEnv * env,                                                         jobject self,                                                         jboolean xmlStandalone){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  doc->standalone = xmlStandalone;}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getXmlVersion (JNIEnv * env,                                                      jobject self){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  return (doc->version == NULL) ?    xmljNewString (env, BAD_CAST "1.0") :    xmljNewString (env, doc->version);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_setXmlVersion (JNIEnv * env,                                                      jobject self,                                                      jstring xmlVersion){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  if (xmlVersion == NULL)    {      doc->version = NULL;    }  else    {      const xmlChar *version = xmljGetStringChars (env, xmlVersion);      if (!xmlStrEqual (version, BAD_CAST "1.0") &&          !xmlStrEqual (version, BAD_CAST "1.1"))        {          xmljThrowDOMException (env, 9, NULL); /* NOT_SUPPORTED_ERR */          return;        }      doc->version = version;    }}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_getDocumentURI (JNIEnv * env,                                                       jobject self){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  return (doc->name == NULL) ? NULL :    xmljNewString (env, (const xmlChar *) doc->URL);}JNIEXPORT void JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_setDocumentURI (JNIEnv * env,                                                       jobject self,                                                       jstring documentURI){  xmlDocPtr doc;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  if (documentURI == NULL)    {      doc->URL = NULL;    }  else    {      doc->URL = xmljGetStringChars (env, documentURI);    }}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_xmljAdoptNode (JNIEnv *env,                                                      jobject self,                                                      jobject jnode){  xmlDocPtr doc;  xmlNodePtr node;  doc = (xmlDocPtr) xmljGetNodeID (env, self);  node = xmljGetNodeID (env, jnode);  if (node == NULL)    {      xmljThrowDOMException (env, 8, NULL); /* NOT_FOUND_ERR */      return NULL;    }  if (node->type == XML_DOCUMENT_NODE ||      node->type == XML_DOCUMENT_TYPE_NODE ||      node->type == XML_ENTITY_NODE ||      node->type == XML_NOTATION_NODE)    {      xmljThrowDOMException (env, 9, NULL); /* NOT_SUPPORTED_ERR */      return NULL;    }  xmlUnlinkNode (node);  node = xmlDocCopyNode (node, doc, 1);  return xmljGetNodeInstance (env, node);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocument_renameNode (JNIEnv * env,                                                   jobject self						   __attribute__ ((__unused__)),                                                   jobject n 						   __attribute__ ((__unused__)),                                                   jstring namespaceURI						   __attribute__ ((__unused__)),                                                   jstring qName						   __attribute__ ((__unused__))){  xmlNodePtr node;  xmlNsPtr ns;  const xmlChar *s_qName;  const xmlChar *href;  const xmlChar *prefix;  int *len;  node = xmljGetNodeID (env, n);  if (node == NULL)    {      xmljThrowDOMException (env, 8, NULL); /* NOT_FOUND_ERR */      return NULL;    }  s_qName = xmljGetStringChars (env, qName);  if (xmlValidateQName (s_qName, 0))    {      xmljThrowDOMException (env, 5, NULL); /* INVALID_CHARACTER_ERR */      return NULL;    }  xmlNodeSetName (node, s_qName);    href = xmljGetStringChars (env, namespaceURI);  len = (int *) malloc (sizeof (int));  prefix = xmlSplitQName3 (s_qName, len);  ns = node->ns;  if (ns == NULL)    {      if (href != NULL)        {          ns = xmlNewNs (node, href, prefix);          xmlSetNs (node, ns);        }    }  else    {      node->ns = NULL;      /*xmlFreeNs (ns); FIXME this can segfault (?) */      if (href != NULL)        {          ns = xmlNewNs (node, href, prefix);          xmlSetNs (node, ns);        }    }  free (len);  return n;}/* -- GnomeDocumentBuilder -- */JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocumentBuilder_parseStream (JNIEnv * env,                                                           jobject self,                                                           jobject in,                                                           jbyteArray                                                           detectBuffer,                                                           jstring publicId,                                                           jstring systemId,                                                           jstring base,                                                           jboolean validate,                                                           jboolean coalesce,                                                           jboolean                                                           expandEntities,                                                           jboolean                                                           entityResolver,                                                           jboolean                                                           errorHandler){  xmlDocPtr doc;  doc = xmljParseDocument(env,                          self,                          in,                          detectBuffer,                          publicId,                          systemId,                          base,                          validate,                          coalesce,                          expandEntities,                          0,                          0,                          entityResolver,                          errorHandler,                          0,                          0,                          1);  return xmljCreateDocument (env, self, doc);}JNIEXPORT jobject JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocumentBuilder_createDocument(JNIEnv * env, jobject self, jstring namespaceURI, jstring qualifiedName, jobject doctype){  xmlDocPtr doc;  xmlNodePtr root;  xmlNsPtr ns;  const xmlChar *href;  const xmlChar *prefix;  const xmlChar *qName;  qName = xmljGetStringChars (env, qualifiedName);  href = xmljGetStringChars (env, namespaceURI);  if (qName == NULL)    {      prefix = NULL;    }  else    {      int *len;            len = (int *) malloc (sizeof (int));      prefix = xmlSplitQName3 (qName, len);      free (len);    }    /* Create the document node */  doc = xmlNewDoc (BAD_CAST "1.0");  /* doctype */  if (doctype != NULL)    {      jclass cls;      jmethodID method;      jstring ret;      const xmlChar *name;      const xmlChar *publicId;      const xmlChar *systemId;      const xmlChar *internalSubset;      xmlDtdPtr dtd;      cls = (*env)->FindClass (env, "org/w3c/dom/DocumentType");      if (cls == NULL)        {          return NULL;        }      /* name */      method = (*env)->GetMethodID (env, cls, "getName",                                    "()Ljava/lang/String;");      if (method == NULL)        {          return NULL;        }      ret = (jstring) (*env)->CallObjectMethod (env, doctype, method);      name = xmljGetStringChars (env, ret);            /* publicId */      method = (*env)->GetMethodID (env, cls, "getPublicId",                                    "()Ljava/lang/String;");      if (method == NULL)        {          return NULL;        }      ret = (jstring) (*env)->CallObjectMethod (env, doctype, method);      publicId = xmljGetStringChars (env, ret);      /* systemId */      method = (*env)->GetMethodID (env, cls, "getSystemId",                                    "()Ljava/lang/String;");      if (method == NULL)        {          return NULL;        }      ret = (jstring) (*env)->CallObjectMethod (env, doctype, method);      systemId = xmljGetStringChars (env, ret);      /* internalSubset */      method = (*env)->GetMethodID (env, cls, "getInternalSubset",                                    "()Ljava/lang/String;");      if (method == NULL)        {          return NULL;        }      ret = (jstring) (*env)->CallObjectMethod (env, doctype, method);      internalSubset = xmljGetStringChars (env, ret);      /* TODO notations */      /* TODO entities */      if (internalSubset == NULL)        {          dtd = xmlNewDtd (doc, name, publicId, systemId);        }      else        {          dtd = xmlCreateIntSubset (doc, name, publicId, systemId);          /* TODO parse internal subset? */          xmljThrowDOMException (env, 9, NULL); /* NOT_SUPPORTED_ERR */          return NULL;        }    }    /* Create the root element */  root = xmlNewNode (NULL, qName);  xmlDocSetRootElement (doc, root);  ns = xmlNewNs (root, href, prefix);  xmlSetNs (root, ns);    return xmljCreateDocument (env, self, doc);}/* -- GnomeDocumentType -- */JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocumentType_getPublicId (JNIEnv * env,                                                        jobject self){  xmlDtdPtr dtd;  dtd = (xmlDtdPtr) xmljGetNodeID (env, self);  return xmljNewString (env, dtd->ExternalID);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocumentType_getSystemId (JNIEnv * env,                                                        jobject self){  xmlDtdPtr dtd;  dtd = (xmlDtdPtr) xmljGetNodeID (env, self);  return xmljNewString (env, dtd->SystemID);}JNIEXPORT jstring JNICALLJava_gnu_xml_libxmlj_dom_GnomeDocumentType_getInternalSubset (JNIEnv * env,                                                             jobject self							     __attribute__ ((__unused__))){  /* TODO */  xmljThrowDOMException (env, 9, NULL); /* NOT_SUPPORTED_ERR */  return NULL;}/* -- GnomeElement -- */

⌨️ 快捷键说明

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