|
xml_parser_set_option
Set options in an XML parser
(PHP 4, PHP 5)
Examples ( Source code ) » xml_parser_set_option
Related Examples ( Source code ) » xml_parser_set_option Examples ( Source code ) » Turning an XML Document into an Array Examples ( Source code ) » Generating Tables from XML Examples ( Source code ) » Transforming XML into Basic HTML Examples ( Source code ) » SAX Parser Code Examples / Notes » xml_parser_set_optionta
XML_OPTION_SKIP_WHITE works for me (linux, php 4.2.1) phpinfo says : XML Support active XML Namespace Support active EXPAT Version expat_1.95.2 i guess it depends on expat version/presence gregoire dot hubert
XML_OPTION_SKIP_WHITE =1 allows the parser to skip "space" characters in xml document (default is 0)
pupeno
XML is case sensitive, then, from my point of view, disabling case folding doesn't goes against xml 1.0 specifications but the contrary, disabling case folding allow us to distiguish between diferent cases of the same letter ('a' and 'A') which of XML are two diferent things. From my point of view, disabling case folding is a good practice and I think it should be disabled by default. More information on: http://www.isacat.net/2001/xml/case.htm and http://www.w3.org/TR/REC-xml Thank you. chris
The two 'skip' tags are not available to windows users using PHP 4.0.4. The following: $skipWhite = xml_parser_get_option ($xmlParser,XML_OPTION_SKIP_WHITE); $skipTagStart = xml_parser_get_option ($xmlParser,XML_OPTION_SKIP_TAGSTART); generates the following errors: Warning: xml_parser_get_option: unknown option in c:/program files/abria merlin/apache/htdocs/xml/sax_test.php on line 230 matt
Re: anony at mous dot com case folding is a violation of the XHTML specification. xhtml is all in lowercase to be inline with the DOM j no_spam_please
In the function below, you need to update two lines if you don't want php to throw warnings. change these two: $elements[$index]['attributes'] = $tag['attributes']; $elements[$index]['content'] = $tag['value']; to this: $elements[$index]['attributes'] = empty($tag['attributes']) ? "" : $tag['attributes']; $elements[$index]['content'] = empty($tag['value']) ? "" : $tag['value']; maschoen
I'm a little confused about using xml_parser_set_option and xml_parser_get_option with XML_OPTION_SKIP_WHITE and XML_OPTION_SKIP_TAGSTART. Looking at the source code, ...set_option() accepts both ...SKIP_WHITE and ...SKIP_TAGSTART, and sets a program variables. On the other hand, ...get_option() returns an error for both. I'm not sure of the code actually uses the variables properly, although it does reference the set variables. This does look like an oversite. anony
Disable case folding or your code will be violating the XML 1.0 specification.
06-sep-2006 03:56
A little mod to a function posted here... function xml_to_array( $file ) { $parser = xml_parser_create(); xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 ); xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 ); xml_parse_into_struct( $parser, file_get_contents($file), $tags ); xml_parser_free( $parser ); $elements = array(); $stack = array(); foreach ( $tags as $tag ) { $index = count( $elements ); if ( $tag['type'] == "complete" || $tag['type'] == "open" ) { $elements[$index] = array(); $elements[$index]['name'] = $tag['tag']; $elements[$index]['attributes'] = $tag['attributes']; $elements[$index]['content'] = $tag['value']; if ( $tag['type'] == "open" ) { # push $elements[$index]['children'] = array(); $stack[count($stack)] = &$elements; $elements = &$elements[$index]['children']; } } if ( $tag['type'] == "close" ) { # pop $elements = &$stack[count($stack) - 1]; unset($stack[count($stack) - 1]); } } return $elements[0]; } |
Change Languageutf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler |