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

📄 php_domxml.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	/* Not yet initialized le_*s */	le_domxmlnotationp  = -10003;#if defined(LIBXML_XPATH_ENABLED)	le_xpathctxp = zend_register_list_destructors_ex(php_free_xpath_context, NULL, "xpathcontext", module_number);	le_xpathobjectp = zend_register_list_destructors_ex(NULL, NULL, "xpathobject", module_number);#endif/*	le_domxmlnsp = register_list_destructors(NULL, NULL); */#if HAVE_DOMXSLT	le_domxsltstylesheetp =	zend_register_list_destructors_ex(php_free_xslt_stylesheet, NULL, "xsltstylesheet", module_number);#endif	INIT_OVERLOADED_CLASS_ENTRY(ce, "domnode", php_domxmlnode_class_functions, NULL, NULL, NULL);	domxmlnode_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domdocument", php_domxmldoc_class_functions, NULL, NULL, NULL);	domxmldoc_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);   	INIT_OVERLOADED_CLASS_ENTRY(ce, "domparser", php_domxmlparser_class_functions, NULL, NULL, NULL);	domxmlparser_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domdocumenttype", php_domxmldoctype_class_functions, NULL,	NULL, NULL);	domxmldoctype_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "dtd", php_domxmldtd_class_functions, NULL, NULL, NULL);	domxmldtd_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domelement", php_domxmlelement_class_functions, NULL, NULL, NULL);	domxmlelement_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domattribute", php_domxmlattr_class_functions, NULL, NULL, NULL);	domxmlattr_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domcdata", php_domxmlcdata_class_functions, NULL, NULL, NULL);	domxmlcdata_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domtext", php_domxmltext_class_functions, NULL, NULL, NULL);	domxmltext_class_entry = zend_register_internal_class_ex(&ce, domxmlcdata_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domcomment", php_domxmlcomment_class_functions, NULL, NULL, NULL);	domxmlcomment_class_entry = zend_register_internal_class_ex(&ce, domxmlcdata_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domprocessinginstruction", php_domxmlpi_class_functions, NULL, NULL, NULL);	domxmlpi_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domnotation", php_domxmlnotation_class_functions, NULL, NULL, NULL);	domxmlnotation_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domentity", php_domxmlentity_class_functions, NULL, NULL, NULL);	domxmlentity_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domentityreference", php_domxmlentityref_class_functions, NULL, NULL, NULL);	domxmlentityref_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "domnamespace", php_domxmlns_class_functions, NULL, NULL, NULL);	domxmlns_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC);#if defined(LIBXML_XPATH_ENABLED)	INIT_OVERLOADED_CLASS_ENTRY(ce, "XPathContext", php_xpathctx_class_functions, NULL, NULL, NULL);	xpathctx_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC);	INIT_OVERLOADED_CLASS_ENTRY(ce, "XPathObject", php_xpathobject_class_functions, NULL, NULL, NULL);	xpathobject_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC);#endif#if HAVE_DOMXSLT	INIT_OVERLOADED_CLASS_ENTRY(ce, "XsltStylesheet", php_domxsltstylesheet_class_functions, NULL, NULL, NULL);	domxsltstylesheet_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC);#endif	REGISTER_LONG_CONSTANT("XML_ELEMENT_NODE",			XML_ELEMENT_NODE,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NODE",		XML_ATTRIBUTE_NODE,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_TEXT_NODE",				XML_TEXT_NODE,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_CDATA_SECTION_NODE",	XML_CDATA_SECTION_NODE,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ENTITY_REF_NODE",		XML_ENTITY_REF_NODE,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ENTITY_NODE",			XML_ENTITY_NODE,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_PI_NODE",				XML_PI_NODE,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_COMMENT_NODE",			XML_COMMENT_NODE,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_DOCUMENT_NODE",			XML_DOCUMENT_NODE,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_DOCUMENT_TYPE_NODE",	XML_DOCUMENT_TYPE_NODE,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_DOCUMENT_FRAG_NODE",	XML_DOCUMENT_FRAG_NODE,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_NOTATION_NODE",			XML_NOTATION_NODE,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_HTML_DOCUMENT_NODE",	XML_HTML_DOCUMENT_NODE,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_DTD_NODE",				XML_DTD_NODE,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ELEMENT_DECL_NODE", 	XML_ELEMENT_DECL,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_DECL_NODE",	XML_ATTRIBUTE_DECL,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ENTITY_DECL_NODE",		XML_ENTITY_DECL,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_NAMESPACE_DECL_NODE",	XML_NAMESPACE_DECL,			CONST_CS | CONST_PERSISTENT);#ifdef XML_GLOBAL_NAMESPACE	REGISTER_LONG_CONSTANT("XML_GLOBAL_NAMESPACE",		XML_GLOBAL_NAMESPACE,		CONST_CS | CONST_PERSISTENT);#endif	REGISTER_LONG_CONSTANT("XML_LOCAL_NAMESPACE",		XML_LOCAL_NAMESPACE,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_CDATA",		XML_ATTRIBUTE_CDATA,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ID",			XML_ATTRIBUTE_ID,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREF",		XML_ATTRIBUTE_IDREF,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREFS",		XML_ATTRIBUTE_IDREFS,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENTITY",		XML_ATTRIBUTE_ENTITIES,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKEN",		XML_ATTRIBUTE_NMTOKEN,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKENS",	XML_ATTRIBUTE_NMTOKENS,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENUMERATION",	XML_ATTRIBUTE_ENUMERATION,	CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NOTATION",	XML_ATTRIBUTE_NOTATION,		CONST_CS | CONST_PERSISTENT);#if defined(LIBXML_XPATH_ENABLED)	REGISTER_LONG_CONSTANT("XPATH_UNDEFINED",			XPATH_UNDEFINED,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_NODESET",				XPATH_NODESET,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_BOOLEAN",				XPATH_BOOLEAN,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_NUMBER",				XPATH_NUMBER,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_STRING",				XPATH_STRING,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_POINT",				XPATH_POINT,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_RANGE",				XPATH_RANGE,				CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_LOCATIONSET",			XPATH_LOCATIONSET,			CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("XPATH_USERS",				XPATH_USERS,				CONST_CS | CONST_PERSISTENT);#endif	REGISTER_LONG_CONSTANT("DOMXML_LOAD_PARSING",		DOMXML_LOAD_PARSING,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("DOMXML_LOAD_VALIDATING",	DOMXML_LOAD_VALIDATING,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("DOMXML_LOAD_RECOVERING",	DOMXML_LOAD_RECOVERING,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("DOMXML_LOAD_SUBSTITUTE_ENTITIES",	DOMXML_LOAD_SUBSTITUTE_ENTITIES,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("DOMXML_LOAD_COMPLETE_ATTRS",DOMXML_LOAD_COMPLETE_ATTRS,		CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("DOMXML_LOAD_DONT_KEEP_BLANKS",DOMXML_LOAD_DONT_KEEP_BLANKS,		CONST_CS | CONST_PERSISTENT);#if HAVE_DOMXSLT && HAVE_DOMEXSLT	exsltRegisterAll();#endif	xmlInitParser();	return SUCCESS;}/* }}} *//* {{{ proto int domxml_test(int id)   Unity function for testing */PHP_FUNCTION(domxml_test){	zval *id;	if ((ZEND_NUM_ARGS() != 1) || getParameters(ht, 1, &id) == FAILURE)		WRONG_PARAM_COUNT;	convert_to_long(id);	RETURN_LONG(Z_LVAL_P(id));}/* }}} *//* {{{ PHP_MINFO_FUNCTION(domxml) */PHP_MINFO_FUNCTION(domxml){	/* don't know why that line was commented out in the previous version, so i left it (cmv) */	php_info_print_table_start();	php_info_print_table_row(2, "DOM/XML", "enabled");	php_info_print_table_row(2, "DOM/XML API Version", DOMXML_API_VERSION);/*	php_info_print_table_row(2, "libxml Version", LIBXML_DOTTED_VERSION); */	php_info_print_table_row(2, "libxml Version", xmlParserVersion);#if defined(LIBXML_HTML_ENABLED)	php_info_print_table_row(2, "HTML Support", "enabled");#endif#if defined(LIBXML_XPATH_ENABLED)	php_info_print_table_row(2, "XPath Support", "enabled");#endif#if defined(LIBXML_XPTR_ENABLED)	php_info_print_table_row(2, "XPointer Support", "enabled");#endif#if HAVE_DOMXSLT	{	char buffer[128];	int major, minor, subminor;	php_info_print_table_row(2, "DOM/XSLT", "enabled");/*	php_info_print_table_row(2, "libxslt Version", LIBXSLT_DOTTED_VERSION); */	major = xsltLibxsltVersion/10000;	minor = (xsltLibxsltVersion - major * 10000) / 100;	subminor = (xsltLibxsltVersion - major * 10000 - minor * 100);	snprintf(buffer, 128, "%d.%d.%d", major, minor, subminor);	php_info_print_table_row(2, "libxslt Version", buffer);	major = xsltLibxmlVersion/10000;	minor = (xsltLibxmlVersion - major * 10000) / 100;	subminor = (xsltLibxmlVersion - major * 10000 - minor * 100);	snprintf(buffer, 128, "%d.%d.%d", major, minor, subminor);	php_info_print_table_row(2, "libxslt compiled against libxml Version", buffer);	}#if HAVE_DOMEXSLT	php_info_print_table_row(2, "DOM/EXSLT", "enabled");	php_info_print_table_row(2, "libexslt Version", LIBEXSLT_DOTTED_VERSION);#endif#endif	php_info_print_table_end();}/* }}} *//* {{{ Methods of Class DomAttribute *//* {{{ proto array domxml_attr_name(void)   Returns list of attribute names   Notice: domxml_node_name() does exactly the same for attribute-nodes,           is this function here still needed, or would an alias be enough?   */PHP_FUNCTION(domxml_attr_name){	zval *id;	xmlAttrPtr attrp;	DOMXML_GET_THIS_OBJ(attrp, id,le_domxmlattrp);	DOMXML_NO_ARGS();	RETURN_STRING((char *) (attrp->name), 1);}/* }}} *//* {{{ proto array domxml_attr_value(void)   Returns list of attribute names */PHP_FUNCTION(domxml_attr_value){	zval *id;	xmlAttrPtr attrp;	xmlChar *content;	DOMXML_GET_THIS_OBJ(attrp, id, le_domxmlattrp);	DOMXML_NO_ARGS();	/* RETURN_STRING((char *) xmlNodeGetContent((xmlNodePtr) attrp), 1); */	if ((content = xmlNodeGetContent((xmlNodePtr) attrp)) != NULL) {		RETVAL_STRING(content,1);	} else {		RETURN_EMPTY_STRING();	}	xmlFree(content);}/* }}} *//* {{{ proto bool domxml_attr_set_value(string content)   Set value of attribute */PHP_FUNCTION(domxml_attr_set_value){	zval *id;	xmlAttrPtr attrp;	int content_len;	char *content;	DOMXML_PARAM_TWO(attrp, id, le_domxmlattrp, "s", &content, &content_len);	/* 	If attribute has children unlink referenced nodes		Spec indicates that content is to be overwritten and not appended		xmlNodeSetContentLen will take care of removing and freeing the rest */	if (attrp->children) {		node_list_unlink(((xmlNodePtr) attrp) ->children);	}	xmlNodeSetContentLen((xmlNodePtr) attrp, content, content_len);	RETURN_TRUE;}/* }}} *//* {{{ proto array domxml_attr_specified(void)   Returns list of attribute names */PHP_FUNCTION(domxml_attr_specified){	zval *id;	xmlAttrPtr attrp;	DOMXML_NOT_IMPLEMENTED();	id = getThis();	attrp = php_dom_get_object(id, le_domxmlattrp, 0 TSRMLS_CC);	RETURN_TRUE;}/* }}} *//* End of Methods DomAttr }}} *//* {{{ Methods of Class DomProcessingInstruction *//* {{{ proto array domxml_pi_target(void)   Returns target of pi */PHP_FUNCTION(domxml_pi_target){	zval *id;	xmlNodePtr nodep;	DOMXML_GET_THIS_OBJ(nodep, id, le_domxmlpip);	DOMXML_NO_ARGS();	RETURN_STRING((char *) nodep->name, 1);}/* }}} *//* {{{ proto array domxml_pi_data(void)   Returns data of pi */PHP_FUNCTION(domxml_pi_data){	zval *id;	xmlNodePtr nodep;	xmlChar *content;	DOMXML_GET_THIS_OBJ(nodep, id, le_domxmlpip);	DOMXML_NO_ARGS();	/* RETURN_STRING(xmlNodeGetContent(nodep), 1); */	if ((content = xmlNodeGetContent(nodep)) != NULL) {		RETVAL_STRING(content,1);	} else {		RETURN_EMPTY_STRING();	}	xmlFree(content);}/* }}} *//* End of Methods of DomProcessingInstruction }}} *//* {{{ Methods of Class DomCData *//* {{{ proto array domxml_cdata_length(void)   Returns list of attribute names */PHP_FUNCTION(domxml_cdata_length){	zval *id;	xmlNodePtr nodep;	DOMXML_NOT_IMPLEMENTED();	id = getThis();	nodep = php_dom_get_object(id, le_domxmlcdatap, 0 TSRMLS_CC);	RETURN_LONG(1);}/* }}} *//* End of Methods DomCDdata }}} *//* {{{ Methods of Class DomNode *//* {{{ proto object domxml_node(string name)   Creates node */PHP_FUNCTION(domxml_node){	zval *rv = NULL;	xmlNode *node;	int ret, name_len;	char *name;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len)  == FAILURE) {		return;	}	node = xmlNewNode(NULL, name);	if (!node) {		RETURN_FALSE;	}	if(DOMXML_IS_TYPE(getThis(), domxmlnode_class_entry)) {		DOMXML_DOMOBJ_NEW(getThis(), node, &ret);	} else {		DOMXML_RET_OBJ(rv, node, &ret);	}}/* }}} *//* {{{ proto object domxml_node_name(void)   Returns name of node */PHP_FUNCTION(domxml_node_name){	zval *id;	xmlNode *n;	int fullQName = 0;	xmlChar *qname = NULL;	const char *str = NULL;	DOMXML_PARAM_ONE(n, id, le_domxmlnodep,"|b",&fullQName);	switch (Z_TYPE_P(n)) {		case XML_ELEMENT_NODE:			if (fullQName && n->ns && n->ns->prefix) {				qname = xmlStrdup(n->ns->prefix);				qname = xmlStrcat(qname, ":");				qname = xmlStrcat(qname, n->name);				str = qname;			} else {				str = n->name;			}			break;		case XML_NAMESPACE_DECL

⌨️ 快捷键说明

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