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

📄 xml.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)    Set up unparsed entity declaration handler */PHP_FUNCTION(xml_set_unparsed_entity_decl_handler){	xml_parser *parser;	zval **pind, **hdl;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pind, &hdl) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	xml_set_handler(&parser->unparsedEntityDeclHandler, hdl);	XML_SetUnparsedEntityDeclHandler(parser->parser, _xml_unparsedEntityDeclHandler);	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_set_notation_decl_handler(resource parser, string hdl)    Set up notation declaration handler */PHP_FUNCTION(xml_set_notation_decl_handler){	xml_parser *parser;	zval **pind, **hdl;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pind, &hdl) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	xml_set_handler(&parser->notationDeclHandler, hdl);	XML_SetNotationDeclHandler(parser->parser, _xml_notationDeclHandler);	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_set_external_entity_ref_handler(resource parser, string hdl)    Set up external entity reference handler */PHP_FUNCTION(xml_set_external_entity_ref_handler){	xml_parser *parser;	zval **pind, **hdl;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pind, &hdl) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	xml_set_handler(&parser->externalEntityRefHandler, hdl);	XML_SetExternalEntityRefHandler(parser->parser, _xml_externalEntityRefHandler);	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_set_start_namespace_decl_handler(resource parser, string hdl)    Set up character data handler */PHP_FUNCTION(xml_set_start_namespace_decl_handler){	xml_parser *parser;	zval **pind, **hdl;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pind, &hdl) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	xml_set_handler(&parser->startNamespaceDeclHandler, hdl);	XML_SetStartNamespaceDeclHandler(parser->parser, _xml_startNamespaceDeclHandler);	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_set_end_namespace_decl_handler(resource parser, string hdl)    Set up character data handler */PHP_FUNCTION(xml_set_end_namespace_decl_handler){	xml_parser *parser;	zval **pind, **hdl;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pind, &hdl) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	xml_set_handler(&parser->endNamespaceDeclHandler, hdl);	XML_SetEndNamespaceDeclHandler(parser->parser, _xml_endNamespaceDeclHandler);	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_parse(resource parser, string data [, int isFinal])    Start parsing an XML document */PHP_FUNCTION(xml_parse){	xml_parser *parser;	zval **pind, **data, **final;	int argc, isFinal, ret;	argc = ZEND_NUM_ARGS();	if (argc < 2 || argc > 3 || zend_get_parameters_ex(argc, &pind, &data, &final) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	convert_to_string_ex(data);	if (argc == 3) {		convert_to_long_ex(final);		isFinal = Z_LVAL_PP(final);	} else {		isFinal = 0;	}	parser->isparsing = 1;	ret = XML_Parse(parser->parser, Z_STRVAL_PP(data), Z_STRLEN_PP(data), isFinal);	parser->isparsing = 0;	RETVAL_LONG(ret);}/* }}} *//* {{{ proto int xml_parse_into_struct(resource parser, string data, array &struct, array &index)    Parsing a XML document */PHP_FUNCTION(xml_parse_into_struct){	xml_parser *parser;	zval **pind, **data, **xdata, **info = 0;	int argc, ret;	argc = ZEND_NUM_ARGS();	if (zend_get_parameters_ex(4, &pind, &data, &xdata,&info) == SUCCESS) {		zval_dtor(*info);		array_init(*info);	} else if (zend_get_parameters_ex(3, &pind, &data, &xdata) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	convert_to_string_ex(data);	zval_dtor(*xdata);	array_init(*xdata);	parser->data = *xdata;	if (info)	  parser->info = *info;	parser->level = 0;	parser->ltags = emalloc(XML_MAXLEVEL * sizeof(char *));	XML_SetDefaultHandler(parser->parser, _xml_defaultHandler);	XML_SetElementHandler(parser->parser, _xml_startElementHandler, _xml_endElementHandler);	XML_SetCharacterDataHandler(parser->parser, _xml_characterDataHandler);	parser->isparsing = 1;	ret = XML_Parse(parser->parser, Z_STRVAL_PP(data), Z_STRLEN_PP(data), 1);	parser->isparsing = 0;	RETVAL_LONG(ret);}/* }}} *//* {{{ proto int xml_get_error_code(resource parser)    Get XML parser error code */PHP_FUNCTION(xml_get_error_code){	xml_parser *parser;	zval **pind;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pind) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	RETVAL_LONG((long)XML_GetErrorCode(parser->parser));}/* }}} *//* {{{ proto string xml_error_string(int code)   Get XML parser error string */PHP_FUNCTION(xml_error_string){	zval **code;	char *str;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &code) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_long_ex(code);	str = (char *)XML_ErrorString((int)Z_LVAL_PP(code));	if (str) {		RETVAL_STRING(str, 1);	}}/* }}} *//* {{{ proto int xml_get_current_line_number(resource parser)    Get current line number for an XML parser */PHP_FUNCTION(xml_get_current_line_number){	xml_parser *parser;	zval **pind;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pind) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	RETVAL_LONG(XML_GetCurrentLineNumber(parser->parser));}/* }}} *//* {{{ proto int xml_get_current_column_number(resource parser)   Get current column number for an XML parser */PHP_FUNCTION(xml_get_current_column_number){	xml_parser *parser;	zval **pind;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pind) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	RETVAL_LONG(XML_GetCurrentColumnNumber(parser->parser));}/* }}} *//* {{{ proto int xml_get_current_byte_index(resource parser)    Get current byte index for an XML parser */PHP_FUNCTION(xml_get_current_byte_index){	xml_parser *parser;	zval **pind;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pind) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	RETVAL_LONG(XML_GetCurrentByteIndex(parser->parser));}/* }}} *//* {{{ proto int xml_parser_free(resource parser)    Free an XML parser */PHP_FUNCTION(xml_parser_free){	zval **pind;	xml_parser *parser;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pind) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	if (parser->isparsing == 1) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Parser cannot be freed while it is parsing.");		RETURN_FALSE;	}	if (zend_list_delete(parser->index) == FAILURE) {		RETURN_FALSE;	}	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_parser_set_option(resource parser, int option, mixed value)    Set options in an XML parser */PHP_FUNCTION(xml_parser_set_option){	xml_parser *parser;	zval **pind, **opt, **val;	if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &pind, &opt, &val) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	convert_to_long_ex(opt);	switch (Z_LVAL_PP(opt)) {		case PHP_XML_OPTION_CASE_FOLDING:			convert_to_long_ex(val);			parser->case_folding = Z_LVAL_PP(val);			break;		case PHP_XML_OPTION_SKIP_TAGSTART:			convert_to_long_ex(val);			parser->toffset = Z_LVAL_PP(val);			break;		case PHP_XML_OPTION_SKIP_WHITE:			convert_to_long_ex(val);			parser->skipwhite = Z_LVAL_PP(val);			break;		case PHP_XML_OPTION_TARGET_ENCODING: {			xml_encoding *enc;			convert_to_string_ex(val);			enc = xml_get_encoding(Z_STRVAL_PP(val));			if (enc == NULL) {				php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported target encoding \"%s\"", Z_STRVAL_PP(val));				RETURN_FALSE;			}			parser->target_encoding = enc->name;			break;		}		default:			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown option");			RETURN_FALSE;			break;	}	RETVAL_TRUE;}/* }}} *//* {{{ proto int xml_parser_get_option(resource parser, int option)    Get options from an XML parser */PHP_FUNCTION(xml_parser_get_option){	xml_parser *parser;	zval **pind, **opt;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &pind, &opt) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(parser,xml_parser *, pind, -1, "XML Parser", le_xml_parser);	convert_to_long_ex(opt);	switch (Z_LVAL_PP(opt)) {		case PHP_XML_OPTION_CASE_FOLDING:			RETURN_LONG(parser->case_folding);			break;		case PHP_XML_OPTION_TARGET_ENCODING:			RETURN_STRING(parser->target_encoding, 1);			break;		default:			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown option");			RETURN_FALSE;			break;	}	RETVAL_FALSE;	/* never reached */}/* }}} *//* {{{ proto string utf8_encode(string data)    Encodes an ISO-8859-1 string to UTF-8 */PHP_FUNCTION(utf8_encode){	zval **arg;	XML_Char *encoded;	int len;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(arg);	encoded = xml_utf8_encode(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), &len, "ISO-8859-1");	if (encoded == NULL) {		RETURN_FALSE;	}	RETVAL_STRINGL(encoded, len, 0);}/* }}} *//* {{{ proto string utf8_decode(string data)    Converts a UTF-8 encoded string to ISO-8859-1 */PHP_FUNCTION(utf8_decode){	zval **arg;	XML_Char *decoded;	int len;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(arg);	decoded = xml_utf8_decode(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), &len, "ISO-8859-1");	if (decoded == NULL) {		RETURN_FALSE;	}	RETVAL_STRINGL(decoded, len, 0);}/* }}} */#endif/* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */

⌨️ 快捷键说明

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