Что такое код xml_set_character_data_handler

Содержание

xml_set_character_data_handler

Set up character data handler

Description

Sets the character data handler function for the XML parser parser .

Parameters

A reference to the XML parser to set up character data handler function.

handler is a string containing the name of a function that must exist when xml_parse is called for parser .

The function named by handler must accept two parameters:

Character data handler is called for every piece of a text in the XML document. It can be called multiple times inside each fragment (e.g. for non-ASCII strings).

If a handler function is set to an empty string, or FALSE , the handler in question is disabled.

Note: Instead of a function name, an array containing an object reference and a method name can also be supplied.

Return Values

Returns TRUE on success or FALSE on failure.

��� ����� ��� xml_set_character_data_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_character_data_handler — ����������� ���������� ���������� ������.

��������

bool xml_set_character_data_handler (resource parser, string handler)

������������� ������� ����������� ���������� ������ ��� XML-���������� parser .
handler ��� ������ � ������ �������, ������� ������� ������������ � ������ ������ xml_parse() ��� parser .

�������, ����������� � handler , ������� ��������� ��� ���������: handler (resource parser, string data) parser

��� ������ �� XML-���������, ���������� ����������.

������ ��������, data , �������� ���������� ������ ��� string.

���� ������� ����������� ����������� ��� ������ ������, ��� FALSE , ���������� �����������/disabled.

TRUE ������������, ���� ���������� ��������, � FALSE , ���� parser �� �������� �����������.

����������: ������ ����� ������� ����� ���� ������������ ����� ������, ���������� ������ �� ������ � ��� ������.

��� ������� xml parser �� PHP

� ����� ����� xml parser`��, �� �� ���������� ��� ���� ���-����������������. ������ �� � ���� �������� � ��������� ������ � ����, ��� ������� ������� xml parser � php.

��, �� �� ����� ����: xml-����� � ����� �������� �����. � ����� ������������ ������ ���, �� ������, � ������ �����, ��� � ���� ��������. �� �� ����� ����� ���������������? ���� �� �� ���� �����, �� ����� ������� � ��� ����.

�� ������������, ��� �����, ��� ����� XML � ��������� ��� ����� �� �����. ��, ���� �� �����, �� ����� ������ �����: http://ru.wikipedia.org/wiki/XML

��� ������ �������� �������� XML �� PHP, � ��������� ������� ����� ������� � PHP ��� ������ � XML-�������, ������� ���������� �XML Parser Functions�. ������� ���������� � ������������� ������� ������� ������� xml_parser_create:

����� ��� ����� ������� �������, ����� ������� ����� ������������ ������������ ��� xml-���� � ��������� ���������� � �������� ��������. �.�. ����� ���������� ����� �����������:

��� ������� �������� �� ��������� ������������ ������ �������� � ����� ��������. ��������, ���� � ������ xml-����� ���������� ���������� , �� ������� startElement ���������, ����� ������ ������ ������� , � ������� endElement � ��� ���������� .

���� �� ������� startElement � endElement ��������� ��������� ���������� �������� ������������ �� php:

� ��� �� ��������� ������ �� �����? �� �� ���� �� ������ �� ������ ��������� ��� ����� �� � ����� �� �������! � �� ���� ������: ���������� ����� ����������� �� ����� ������������, �.�. �� ������ ������������ ����������� ������� ��� ������ � �������:

������� ����. � ������ ����� ��������� ��������� ��� � ����������� ����������� ������ ������� xml_parse:

����� ������� ��� ����� ������ ����. ������ � ��� ��, ��� ������� xml_parse � ������� ��������� ����� �������� ���� ���������� ��������� ������ (true � ���� ������ ���������, false � ���� ���). ������ � ��� ��, ��� ��� � � ����� ����, �� ������ ������� ����� �� ��������. �� ��� �������� ������� xml_get_error_code � xml_error_string. ������ ������� �������� ��� ������, � ������ � �� ����������� ���� ���������� ��������� �������� ������. ��� � ���������� ������������� ������ ��������� � ���������� �����. �� ����� �������� ������� xml_get_current_line_number ������ ��� ����� ������� �������������� ������ � �����.

� ��� ������ �� ������ ���������� ���������� �������� �������. ��� �������� XML � ��� ������� xml_parser_free:

���, �������� ������� �� �����������. ���� �� ���������� �� �� ����. ��� ����� � �������� xml-���� � ����� ������� ����������:

������� ���� ���� data.xml � ���������� ��� ���������� � ������� ���������� ����:

� ���������� �������������� ���� ����������� ������� ������� ����� � ���� ���� ��������� ����������:

��������� ��������� XML-����, ������� ���

�� , � ����������� ��� ������� �������:

XML Error: Mismatched tag at line 5

�� ��! ��������� �� ������� ��������! ������ �������� �������������.

��, � ����� ��� ���� ����� �� �� �� ������ �����, ������������ ������ ����� address � phone. ���������� ��� ������� � ��������� ��������� ���������� � ������� ������� xml_set_character_data_handler:

� ��������� � ��� ���� �������-����������:

��������� ������ �� �����:

�! ������ ������ ���!

������, ���-������ �������, ��� ����� ����� � ��������� ��� �������� ������� ��������? ������� ��� �� � ����� xml-����� ������ ������� ����������. ������ ���-�� �����-�� ��������� �����������, ����� ������ uppercase�

���, �����! ����������� ���� ��� ������� xml_parser_set_option:

����� ������� �� �������� ����� ���� ��������� � ���� ����� �������� �������:

� ���� ������ �� ����������� ����� �������, �� ��� ����������� ����� ����������� ����� ������������ ���������� �� XML-������. � ��� ������ ��� �����-�� ������ ����� ������ ������, �� �� ���� �������������, ����� ��� ����� �������

xml_set_character_data_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_character_data_handler — ����������� ���������� ���������� ������.

��������

bool xml_set_character_data_handler (resource parser, string handler)

������������� ������� ����������� ���������� ������ ��� XML-���������� parser.
handler
��� ������ � ������ �������, ������� ������� ������������ � ������ ������ xml_parse() ��� parser.

�������, ����������� � handler, ������� ��������� ��� ���������: handler (resource parser, string data)

��� ������ �� XML-���������, ���������� ����������.

������ ��������, data, �������� ���������� ������ ��� string.

���� ������� ����������� ����������� ��� ������ ������, ��� FALSE, ���������� �����������/disabled.

TRUE ������������, ���� ���������� ��������, � FALSE, ���� parser �� �������� �����������.

����������: ������ ����� ������� ����� ���� ������������ ����� ������, ���������� ������ �� ������ � ��� ������.

���������� ���� xml_set_character_data_handler($xml_parser, «characterhandler»)

apollox

�������

���������� ���� xml_set_character_data_handler($xml_parser, «characterhandler»)

��� ��������� ������ � ������� ������ ������� ���������� ����, ���� ������ �������� ��������� �������.

function characterhandler($parser, $data)
<
$cru_rss[‘title’] = $data;
>

���� �������� $data = »Voestalpine�s BU stake rises to 64.4%»
�� �� ������ �������� «�s BU stake rises to 64.4%»

�� ���� ��� ��� �� ������� ���������.

addslashes �� ��������.
����� �� ���-�� ��������?
������� �������.

slach

�������

���� �� � ��������
� � ��� ��� characterhandler ���������� ��������� ���
������ ��� ��������� ����������������� ���������� SAX ���������� SAX �������

apollox

�������

��� ���� ��������� ��� �������� RSS � ���

� ��� ���� ������ ����:

____
1111
2222
3333
____

������� characterhandler, � ������� ������� ������ � �������, ������� ���� �������� �� ����������� ITEM, � ������� ������ �� ���������� � ������

function characterhandler($parser, $data)
<
global $rbc_rss;
if ($rbc_rss[‘open_tag_name’]==’ITEM’) $rbc_rss = array();
if ($rbc_rss[‘open_tag_name’]==’TITLE’) $rbc_rss[‘title’] .= $data;
>

function startElement($parser, $name, $attrs)
<
global $rbc_rss;
$rbc_rss[‘open_tag_name’] = $name;
>

��� ���� $rbc_rss ������-�� �� ����������, � ������ ����� endElement ��������� ���
1111
11112222
111122223333

�� ���� � ����-��������� ������ ����� item title ���� � ����� ������:

����� ������� ��� ����, ���� ����� ����� , ��� � ����� ������, ������ �� ��������� $rbc_rss .

PHP � XML

XML — ��� ���������� �� extensible Markup Language (����������� ���� ��������). ���� XML � ������������ ������� ����� �������� ����� SGML (Standard Generalized Markup Language � ����������� ���������� ���� ��������), �� ��� ������������� XML �� ��������� ���-���� ����� � ����� SGML. ���� XML ���������� ��������� �������� ����������������� ����������, ��������� ��� ������ ������ � ������������.

���� XML ��������� ��������� ����������� �� ���������� ������� ������ �������. ����� ����������� ���������� ������������ ��������� � ������� ��� ����� ����������� � ������� ������� ���������� �������� ��� ���.

��������, ����� ����� ����� ������ ���������� ����� XML, ���������� ���� ��� �� ������� ��������� ������, � ������� �� ����� ����������� ���� HTML. ����������, HTML � ��� ����� ���� ��������, �� ��������� HTML ����� ������ ������� ������������������. ����������� HTML (��������� ���������� ������) � �������� ������������ ����� ����� ���� ������� ����������������� �������, �������������� ���������.

��������, ���� ������������� ������������

�� ���� �����, ��� � ���� HTML ����������� ���������, �������, ��� ������ ������ ����������� �� ����� ��������������� ����������, ������� �� ������ ���� � ����������� ����, ��� �������� ����� ������ �� ������ �������� ����� ��� ��� �������� ������ �������� ������ � ����� � ������� �����������. ������� � ������� ������ ������������ ��������� ������ ���������� ������� � ��������� ����������� ������, �� �� ���� �� ���� ������� �� ����������� ������ �� ��������� ������.

������ ��, ��� ������� ���������� � �������� ����� XML, ������������� � ����� ���������������� ����������, ����� ����� �� ����������� ������ ���� XML. � ���������������� ��� XML �� ������ ���������� ��� HTML. � ���������, ������������ ����� HTML ����� ����� ������ ��������� �������� ����� XML, ��������� ������������ ����:

������ ��������, ��� � ���� XML ������� ������������� ����������� � ��������, � ����� ��������������� ����� �� ������������� ���������, ��� � � ���� HTML. � ����� XML ������ ���� ������������ ���������� ���������.

��� ������������ ��������� XML ���������� ��������� ��������� ���� ����������� ���������� � ��� ���������:

  • � ��������� ������ ���� ������������ ���� ������������ �������� �������, ������� �������� ��� ������ ��������, ������� �������� � ���������� HTML. ������ �������� ������� �������� ����� ��������� ���������.
  • ��������� �������� ��������� ������ ���� �������������. ��� ��������, ��� ��������� ��������� � ������������� �������� ����������, � ��������� � ���. � ������ ������� ��������, ��� ������� ��������� �������� ������� , � �� ������ ������� �������� � �������������. ���� XML �� ���������, ����� ����������� ����������� �������� �������� �� ������� ������������ ����������� �������� (�.�. �������������).
  • ��� �������� ������ ����� ����������� ���������� (� ���� ������� ������� XML �� HTML, � ������� ����������� ���������� ��������� ���������� ���������). ������ �������� �������� ����� ���� ������ � �������������� ������������ ����������� (��������, ), ��� � ����� HTML, ��� �������� XML �� ��������� ������������ ����������� (��������, ).
  • �������� ����� ��������� ������ ��������, ����� � ������ ������. ���� ������� �������� ��������� ������, ������������ ��� XML (��������, ), �� �� �������� ��������, ��� ��������� ��������� �������������� ������ ������-�� ������� � ������, �� ���� ������ ������ ���� ��������� ��������� ������������ �� ������ ����� ���������.

����� ������������� ���� ������������ ����������, ������� ��������� � ��������� ��� ���������� ���������� �� ����������� ���������� ������������, �������� XML ��������� �����, ��� ��������� XML ������ ���������� � ������������������ ���������� XML. ��� ���������� ������������ ����� ���������� �� ���������, � ������� ������� ��� MIME � ����� ������, ��� � ������� . ��� ���������� �� ������������, �� ��������� �������������� �����������, �� ��������� ���, ������� ��������� �� ������. ����� ����, ��� XML ������������ � ��������, � � ��������� ������� XML, ����� ��� XHTML, ���������, ����� ����� ������������ � ��������� �������� �� �������� ����. � ����� ��������� XML ��� ��������� ������� �������� � ��������� ������������ � �������, ���������� �� �������� ����, �� ������ ������������� ������������ ����������� � ��������, �������� � ������ ��������, ���� ��� ������� ��������� ��� ������������� ���� ������� ��������.

������������ ���������� ����� XML

���� ���� ������� �������� ������������ ����� XML, � � ������ ������� ��������������� �������� ������� ���������� XML. ��� ���� � �������� �������. � ����� ������ ������ ���� XML ������������ � ���� ������������: ��������������� ������� � �������� ������; �������� ������ �� ������ ������������ ���������� � ������; ����������� ������� XML � �������� ��� � ������ ���������� � ������� �������� ������ �� �������, �������� � ���� ������ ������.

�� �������� ����� ����� �� ���������� ���� XML ��� �������� ������ � �������� ��������� �������� ������������� ������, ��������� ��� ������������� ������ ����������� ����������� ����������� ��������� ������ � ���� SQL. ��������������� ������� � ������� XML ���������� ��������, ���� ��� ��� ������ (��������, ���������� ����������� ������������� ���������, �������� � ����������� ������ XML, � �� ����� ��������� ��������������� � �����), �� � � ���� ������ ������ ������������ �� ������� ������ ����������� � �������� �������. � ��������� ��������� ��� ���������� ������������ ������ � ����� ������� ������������� ���� XML � ��������, ��� �������, � ����� XHTML, �� ���������� � ����� ������� ��������� � ������������ ������������ ����������.

Илон Маск рекомендует:  Iis приостановка ftp сервера (pauseftp)

������� � ��������� ����� �������� �������� ������������� ����� �������� ����������� ���������� ����� XML, ��� ����� ������� ����� ������������ � �������������. ��� ���������, ������ � ���� ������� ���� PHP ����� ������� ����� ���������������� ����������. ��������, � ������� ��������� C ����� ���� ��������� ��������� �������� � �������, ����������� �� ���� ������, ����� ����������� ����� ����������� � ���� XML, ������� ����� ���� ������������ � ������� ����� PHP � ��� HTML ��� ����������� � �������� ��� ������ ����������.

����� ����������� ������ ������, � ������� ����������� ��������� ������������� ������, ���������� ����� �����, ���� ��������� ��� ������������ ������ ���� �������� ������������ ����� ����������. ���� � ���, ���, ��� �������, ��������������� ��������� ���� ������� ���������, ������� ��������� �� ������� �������� � �������� ��� HTML, ���� ������ ����� ����� ��������������� ����������� �����������.

����� ����, ���� PHP ��������� ��������� ������ �� ��������� ������ � ��������������� �������� ���� ��������� XML. ������������� � ���� ����� ���������� ��� �������� ��������������� ���������� � ������ ���-����� �� ������, ���, ��������, ��� ��������������� �������������� ����������. � ���� �� ��������� �������������� ����������� ����� ��������� ������ ������������������� ������������� �������������� ��������� ���������� ��������� XML � ������� ���������� � ���� ���-�����. ������ ������, � ��������� ����� ����� ���� XML, ��-��������, ��������� � �������� ���������������� ��������� ����� PHP, ��������� � XML.

��������� API-����������� SAX � DOM

��� ��������� ���� XML � ���������� XML ���� ����� ����������� ��� �������� ���� API-�����������: SimpleXML, ��������� ������ ��������� (Document Object Model � DOM) � ������� API-��������� ��� XML (Simple API for XML � SAX). ��� ��� ���� ������ ������ �������� �� ��� ������������ PHP.

��� ��������������� ������� � ����������� ������ ��������� XML ����� ������������ ����� �� ���� API-����������� � DOM, SAX ��� SimpleXML. � ��� �������� ��� ���������� ��������� XML ������������� � ������� ���������� PHP (����� �������, ��� ��������� �����-���� ���������� ��������� XML �������) ���������� ������������ DOM. ������ �� API-����������� ����� ���� ������������ � ����������, ������� ������� ����:

API-��������� SAX �������� ����� ���������� � ����� ������� � ��������, �� �������� XML ��������������� � ���, �� ��������, ��� ����� ��������� ������. ����� �������, ����, ��������, ���������� ��������� �������������� ������ ������ �������, �� ���� PHP ��������� ������ �������� �������������� ���������� SAX � � ������� ����, ��������, ���������� ���������� ������� �������� ������ ������������. �� ������ ������ ���������� ��������� ������ �������� ��� �������� ����� ����� ������, � ���� ����������� �������� ������ ����������� ����������� �������� ����������.

API-��������� SAX ����� ������ �������� ��� ���������� ������������� �����, � ������� ��������� ���������� ����� � ��� �� �������� �� ���� ��������� ������������� ����, ��������, ��� ������ ����������� ����������� �������� ������������� HTML � ���� �������������� ��������� XML � �������� HTML, ��������������� ��� ������ �� �����. �������������� ���������� SAX ������������ �������� ���� ���, �� ������ �� �����, ������� �� ��������� ������������ � ��������� �������� � ������ ������� ������, ����������� � ��������� ����� �� �������������� ���������.

���������� DOM, ��������������� � ����� PHP, ��������� ��������� ���� XML � ��������� � ������ ������ ��������, ����������� �����. ��� ���� ����������� ������ ��������� � ������ ��������� ��� � ������ �������� ��������� (�������� � ������������ DOM ��������� ������), ����� ���� �������� ��� �������� �������� �������� � ������������ �����, � ����� ��������� �������������� ���������� � ������ ����� ������.

������� DOM ����� ��������� � �����������, � ����� �������� �� � ���� ������. API-��������� DOM ����� XML ������������ ��������� ����������, ���� �������� ���� �������� XML. � ���� ��� XML ��������� ����� �������� � ���� ������ ��� ��������� ���������� ����� ������ ���������� XML ��� ������� ������ � ���� �� ���������, �� ������������� ������������ API-��������� SAX. ����� ����, � ���������� DOM ����������������� ������������ ������ � ������, ������� ��� ��������� ������� ���������� ����� ������������� ������������ �������.

SimpleXML

API-��������� SimpleXML ��������� ������ ������� ���� XML, ������������� ��������� �� ������������ � ��� ��������� � ����������� ���� PHP (����������, ������� � �.�.), � ����� ��������� � ���� ����������� ����� ����������� ��������, ��� � � ������� ���������. API-��������� SimpleXML ��������� �������� ��� ����������, ��������� � ����������� �������� ���������� �������������� �������, ������� ��������� � API-����������� SAX � DOM, � ������������ ������� ������� ������. ����� ����, SimpIeXML ����� ������������� ����� ������� ������ �������� ��������� ������� � ������ XML.

��� �� ����� SimpIeXML ����� ��������� �����������, � ���������, ���� API-��������� ������ ����� ���� �������������� ��� ��������� ��������� � ������� ��������� ���������.

API-��������� DOM

API-��������� DOM ��������� ������ ��������� ������������ ����� ����������� �������� API-��������� ��� ��������, �������������� � ��������������� ������� ���������� XML. ���� ���������� DOM ����������� � ������������ � �������������� ����������� W3C.

�� ��������, ���� ����� ���������� ������� � ���, ��� ������ �������� XML ����� ������������� ��� �������� �����, ������������ ����� ������. � ������� ���������� ���������� ����� ������� ������������� ��������� ��������� � ����� ���������, ������� � ��������� ��������, �� ��������� � �������� ��� ������ �������� �������� ���������. �� ���������� ����� ���� ����� ���������� �������� � ���������� ������. �������� ���������� ��� �������� ������ ����������� � ������ �� ����� XML, ����� ���� ����� ���� ��������� ����������� � ������� ����� PHP, � ���������� ������ �������� � ������ ���� XML ��� ��������� � ����������.

� ������ ���������� DOM ����� PHP ����� �������������� ���������� gnome-libxml2 (����������� ��������� libxml2 ������� Gnome), ��������� ���������, ��� ��� ��������� ������� ������ ������ ������, ��� ������.

��������� DOM XML � ��� ������������ ��������� ��������-��������������� API-��������� � ����� PHP, ��� ��� ������������� ���������� ����� ������������ ������������� �� ��������-��������������� ����������������. ��� ��� ���������� �������� � ������� � ���� API-���������� �����������, �� ����� ����� ����� �������� ������ ��������-���������������� ����������������, ����� ������� ��������� DOM XML.

���������� DOM XML

������� ������������� API-���������� DOM ������� �� ������������ �����, �� ���� ����� ��������� ��������� ��������� ���� ��������:

  1. ������� ����� �������� DOM XML ��� ��������� ���, �������� � ����������� ������.
  2. ��������� ����������� � ���������� �� ������ �����.
  3. ������� �������������� �������� XML � ���� ������ ��� �������� ��� � ����. ��� �������� �������� ����� � ������������ ������, ������������ �������������� ������������.

���� �������� ������� ������, ������� ������������� ������������� ��������� ������� ������� DOM XML. ��������� � ���, ��� ����� ������� � ������ ������������, � ������� ������ �������� �������� ������, ���������� ����� �������, ��� ���-������ ����� �������� ���� � ��������� �������:

� ���������� ���������� ����� ���� ������������ XML-����.

������� DOM

� ������� ���� ��������� �������� ���������������� ������� DOM. ��� ������� ���������� ��������, ������ ��� ������������ �����-���� �� ������ ������� DOM XML!

������� DOM XML �������� ������

������� ����������
domxml_open_mem() ��������� � �������� ��������� ������, ���������� �������� XML. ��������� �������������� ������ ��������� � ������� ������ Document
domxml_open_file() ��������� � �������� ��������� ������, ���������� ��� ����� XML. ��������� �������������� ������ ����� � ������� ������ Document
domxml_xmltree() ��������� � �������� ��������� ������, ���������� �������� XML. ������� ������ �������� PHP � ���������� ������ DOM. ������ ��������, ������������ ���� ��������, ��������� ������ ������
domxml_new_doc() ������� �����, ������ �������� XML � ������. ���������� ������ Document

� ������� ���� ��������� �������� ������ ������ API-���������� DOM:

������ DOM XML

����� ����������
DomDocument ������������� �������� XML. �������� �������� ������� � ����������� DTD, ���� ������� �������
DomNode ������������� ����, ��� �������. ���� ����� ���� �������� ��� ����� ��������� � �������� ��������� ��������. ���� ����� ��������� ������ ����, ���������� ������ � ��������
DomAttr ������������� ������� ����. ������� � ��� ������������ ������������� �������������� ����

� ��������� ������� ��������� �������� ������ ������ ������ DomDocument:

������ ������� DomDocument, DomNode � DomAttr

����� ����������
DomDocument -> createElement() ������� ����� �������, ������������ �������� �������� ���������� ������. ���� ������� ���������� ������������ � ������� �������� � ������� ������� DomNode->appendChild()
DomDocument -> createTextNode() ������� ����� ��������� ���� (������ DomText). ���� ���� ���������� ������������ � ������� ���� � ������� ������� DomNode->appendChild()
DomDocument -> save() ������� �������� XML �� ������ � ��������� ����
DomDocument -> saveXML() ������� �������� XML �� ������ � ������. �������������� ���������� �������� ������ DomNode
DomNode -> appendChild() ������������ ���� � ������� ����
DomNode -> removeChild() ������� �������� ����
DomAttr -> name() ���������� ��� ��������
DomAttr -> value() ���������� �������� ��������

API-��������� SAX

��� ���������� ������� API-��������� ��� XML ������ ����������� ��� ��������������� ������� ���������� XML. ������ API-��������� ������� �� ������������� �������. ��� ��������, ��� �������������� ���������� SAX �������� ��������� ��� ������� ����� ����������� ����, ��� ���������������� ������������ ������� � ������ �������.

������� �������� API-���������� SAX �������� ����� ����������, �������� � ������������� � API-����������� DOM. ������ �����, API-��������� SAX �� �������������� ��� ������ �����-���� ����������� ����������� �� ��������������, � ��� ������ ������� �������������, �������������� ������ ������ �������� XML-DEV, ������ �� ������� ��� ����������� ���� ����������� �������������� ����������� XML (� ������ ������� �� ����� Java) ��� ���������� ������������ API-����������.

API-��������� SAX ��������� no �������� ������������� ��������� ������������ ���������� �� �������. ��� ����������� ���������� �������� � ������� ���� PHP. �� ���� ���� ��� �������������� ���������� �������� �� ��������� XML, ������������ ����� ��������� ���� XML, ��� ��������, ���������� ������ � ������� ��������. ������ ������ ������������� �������������� ��� �������. ���� ��������������� ����������� ������������� �������, ���������� ������ ����� ����������� �����-�� ���������� ������������� �������, �� �������������� ���������� �� ����� ���������������� ��������� ����� ������� ����� ������������� ���������� �������.

���������� �������������� ������������ ������, ������� ������� � ������������ ��������, ��������������� ��������� ��������. ����� ���������� ������ ������� ��������� ������� �������������� ���������� SAX ���������� ���������������� ��������� ���������, ������� ��������� � ��������� ������� �� ��� ���, ���� �� ����� ��������� ����� ���������. ���� ������� �������� ���������������� �� ���������� ���� ���������, �� ������ �� ����� ���������, ��������� �������������� ���������� �� ����� ������������ ����� ��� �������� ������������ �����-���� ����� ���������.

�� ������ ������ 5 � ����� PHP ������������� ����������� ������� expat ������� ������ (James Clark) � ������ ����������� �������������� �������� �������������� ������������ XML. �������������� ���������� � ���������� expat ����� ����� �� ���-����� ������ �� ������ www.jclark.com/xml. �� ���� ������������� PHP �������������� ������ � ����������� libxml2, �� �� ������ ����� ����������� ������������ ���� ���� ��� SAX ��� ������ PHP4 � � ������ PHP5 ��� �����-���� �������.

� ���������, �������� �������������� ���������� ���������� � ����������� ����������, ����� ��� libxml2, � ���� ������� ��������� XML � ����� PHP. �� ���� ���� ���� � �������� � ������ ��������������� �����������, �� ��������������� ���������, ����� ���������� ���������. ��������� ���������� ��������������� ����� � ��������� ���� ������� XML ����� PHP, � ������� ������������ ������ �������������� ����������.

���������� API-���������� SAX

������� ������������� API-���������� SAX ������� �� ������������ �����, �� ���� ����� �������������� ��������� ���� ��������:

  1. ����������, ������ ���� ������� �������� ���������.
  2. �������� ������� ������������ ��� ������� �� �������. ��� ���� ����� ��������� ����������� �������� ���������� ���������� ������, � ����� ����������� ��� ��������� � �������� ���������.
  3. ������� �������������� ���������� � �������������� ������� xml_parser_create(), � ����� ������� ��� � ������� ������� xml_parse().
  4. ���������� ������, ���������� �������������� ������������, � ������� ������� xml_parser_free().

���� �������� ������� ������ ���������� ���� �������� ������� XML (XML-������, ������������ � ������ �������, �������� ���� test_dom.xml, ������� ��� ������ ����):

����� ��������� ������������ SAX

����� ����� ��������� ��������������� ����������� XML, ������������ � ��������� � API-����������� SAX, ������� ��� ����������������� �����. ���� �� ��� ��������� � ���������� � ������� ��������, � ������ � � ������ ������� ���������.

����� ���������� � ������� �������� ����������� ��� ����������� ���� �������, �������� � �������, ������� � ���� ���, ����� ���� ��� ���� XML ������������ �������� �������������� � ��������, ����� ��������� ����������������. ����� ������ ������ SGML � HTML ���� ����������������� � ��������, � ������� ��� ��������� ������������� �����������, ���������� ���������, �������������� �������� ���������� � ������� �������� (�������������� ���� �������� � ������� ��� ������ ������� �� ����� ��������������� �������).

��������� ����� ������� ����������� �����������, ������, ������������� ����������

� ������������ . �� �������� ���������� � ������� �������� ��������� ������������ ��-�� �������, ��������� � ��������������������, ������� ����� ��������������� ��������� ���� XML ��� �������� ��� �������������� � ��������. ���� ����� ���������� � ������� �������� ���������, �� ��� ����� �����, ������������ ������������ �������, ������������� ����� ������ ���� ��������� ���� ���������, �������, ��������, ��� ���� mynode ��������� � ����������� ������� � ���� MYNODE. � ���� ����� ���������� � ������� �������� ���������, �� ����������� ����������

�� ����������� � ����������� ������������

������������� ����� ���������� � ������� �������� ��������� �� ���������, ��� ������������ ������������ XML 1.0. ���� ���������� ���� ����� �� ����� ��������� � ������� ������� xml_parser_set_option(), �� ����������� ����� ������������ � ����������� ������� ����� �������������� �������� ���� � ���������.

����������� ������� �������� ��������� ������ �� ��������������� ����������� XML � ����� �� ���� ��������� � ISO-8859-1, US-ASCII ��� UTF-8. �� ��������� ����������� ��������� ISO-8859-1. ��������� ������, ������������� ������������ �������, ���������� ������� ����������. �� ��������� ������� ��������� ��������� � ����������, ������������ � �������� ���������, ������� ���������� �������� ����������. ���� ����� ������ �������������� � ���������, �������� �� ���, � ������� �� ��������, �� ����� �������� �������� ����� ������� ���������.

������� �������� ����� ��������� � ������� ���� �������� �������������� � ������� ������� xml_parser_get_option() � xml_parser_set_option(). ��� ���������� ��������� ���������� � ������� �������� ������������ ��������� XML_OPTION_CASE_FOLDING, � ������� ��������� �������� � ������� ��������� XML_OPTlON_TARGET_ENCODING.

� ��������� ������� ��������, ��� ������� �������������� ���������� XML, ������� ��������� ������ � ���� ASCII, �������� ����� ���������� � ������� �������� � ������� ���������� � ��������� UTF-8:

������� API-���������� SAX

� ������� ���� �������� ������ �������� ������ ������� SAX � ������� �� ����������:

������� API-���������� SAX ����� XML

������� ����������
xml_parser_create ([encoding]) ������� ����� ��������� ��������������� ����������� XML. � ��������� � ����� ����� ����� ���������� ��������� ������ �������������� ������������. ������������ ��������� �������� ��������� ��������������� ����������� XML, � ������ ���������� ���������� ������� ���������� �������� false. ��������� ���� �������������� �������� � ������������� ��������� �������� (����� ��� UTF-8). ���� ��������� �� ������, �� ��������� ����������� ISO-8859-1
xml_parse (parser, data, [final]) �������� �� ���������� �������������� ���������� XML. �� ����������� �������� �������������� ����������, ��������� � �������������� ������� xml_parser_create(), ������, ���������� �������� XML, � �������������� ������ ����������. ������ ���������� final ��������� �������, ��� ������� �������� ������ ������������ ����� ��������� ��������, ��������������� ��� ��������� ���� �������������� ������������
xml_get_error_code (parser) ���� � �������� ������ ��������������� ����������� ��������� ��������, �� ����������� �������������� ������ ������������ ��������. ����� ���� ������� �� ���������� ��������� ���������� ��� ������
xml_error_string (errorcode) ����� ��������� ���� ������, ������������� �������� xml_get_error_code(), ���������� ������, ���������� �������� ������, ������� ����� ����������� ��� ������ � ���
xml_set_element_handler (parser, start_element_handler, end_element_handler) ���������� ������������� ��� �����������, ������� ������������ ����� ������ �������. ������ �� ��� �������� ���������� ���������� ����������� ��������, ������� ������ � ����� �������� � � �������������� ������� ��������� ��������, � ������ � ���������� ��������� ����������� ��������, ������� ������������ ������ �������������� ������ ��������
xml_set_character_data_handler (parser, cd_handler) ������������� ������� �����������, ������� ���������� ������ ��� ��� ����������� ���������� ������. ������� ����������� ��������� � �������� ��������� ������, ���������� ���������� ������
xml_parser_free (parser) ����������� ������, ��������� � �������������� ������������, ������� ������ �������� xml_parser_create()
xml_set_default_handler (parser, handler) ������������� ����������, ����������� �� ���������. ���� ��� ���������� ������� �� ������ �� ���� ����������, �� ���������� ����������, ����������� �� ���������, ���� �� �����. ��������� � �������� ��������� ��������� �� ������ ��������������� ����������� � �������-����������

API-��������� SimpleXML

API-��������� SimpleXML ������� �������� � ������ PHP 5 � ��������������� ��� �������� ����������� ��������. ��������� API-��������� �� ��������� �� ��������� ��� � ��������� � �������� �� ���������� �������� ������������ � ���������� ����������� � ������, ����� ���� �� ���� ������������ ������ ��������. ���� ��������� ������ ��������� ��������� ������ �� ��������� XML � �������� ������ ��� �����-�� ������ ������, �� ��� ������� ���� ������ � ������� API-���������� SimpleXML ����������� ���������� ���������� ����� ���� �� ��������� �� ����� ������� ���������� ���������.

� ������ API-���������� SimpleXML ����� ��������� ����: � ��������� ���������� ����� ���� �������� XML, ����� ���� �������������� �������������� ������ ��������� � ��� ���������� ��������� ��������� ����������� � ������. �� �������� �������� � ������ �� � ���� ������� DOM (� ������� ��������� ��������� �������������� �����������, ������ ��� ������������ ��� ����������), � � ���� ��������� ���������, ���������� � ����� ����������� ���������� PHP, ������� ��������������� ��������� ��� ����������. ����������, ��� ������� ������ �����, � ������� ������������ API-��������� DOM, ���������� �� ��������� ��������� �� ���� �������� � ������������ ����� ���������, � ������ ���������� ��������� ���� � �� �� �������� � ������ ������ ������������ �����. ��� ��������, ��� SimpleXML � �������� ����� ������������ ����� ����������� ��� ����� PHP ���������� ����� ��������� �� ������ SAX � DOM.

������������� API-���������� SimpleXML

��� ������������� API-���������� SimpleXML ������� � ������� ������� simplexml_load_string() ��� simplexml_load_file() ����������� �������������� � �����-�� ����� (� ���� ������ ��� �����) ��� XML � ������������� ����������. ��� ����� ��������� ��������� ������, ��������������� ��������� � ������� ������. � ������� ���� ��������, ��� ����� ��������� API-��������� SimpleXML ��� ��������� �������� ���������� �� ����� XML � ������� ����� ���� ���������� ����� ����:

������� API-���������� SimpleXML

� ��������� ������� �������� ������ �������� ������ ������� SimpleXML � ������� �� ����������:

����� �������� � �������� SimpleXML

PHP XML Parser xml_set_default_handler splits special character

The XML parser of PHP calls the default handler function twice when it encounters a special character in a string and therefore splits the string. I’ve tried to solve it using different encodings on the XML header as well in the PHP code, but it still splits the string:

Example of the XML:

One would expect:

But the result is

I would like not to have the line splitted, so any idea what the solution is?

1 Answer 1

The xml_parser does create multiple events here for a reason I didn’t finally understood fully, I think this is because of the encoding auto-detection.

You can deal with that by creating your own parser class. This is generally useful anyway, not only in this case. But for this case it’s especially so that you can put together the text of the label which get’s distributed over multiple events.

The basic work is making the callback functions public function of a class, and register these functions then.

Then each time the label tag opens, a temporary store is reset. When text appears, it’s added to that temporary store. If the label tag then closes, you can pass this text to a new «event» this time the function you’re looking for with it’s text:

��� ����� ��� xml_set_character_data_handler

(PHP 3>= 3.0.6, PHP 4 , PHP 5)

xml_set_character_data_handler — Set up character data handler

Description bool xml_set_character_data_handler ( resource parser, callback handler )

Sets the character data handler function for the XML parser parser . handler is a string containing the name of a function that must exist when xml_parse() is called for parser .

The function named by handler must accept two parameters: handler ( resource parser, string data )

The first parameter, parser , is a reference to the XML parser calling the handler.

The second parameter, data , contains the character data as a string.

If a handler function is set to an empty string, or FALSE , the handler in question is disabled.

TRUE is returned if the handler is set up, FALSE if parser is not a parser.

Замечание: В качестве аргумента вместо имени функции может быть передан массив, содержащий ссылку на объект и имя метода.

It would be nice if someone could complete documentation of this function. I think that the «splitting» behaviour should (at least) be mentioned within the documentation, if not explained (please!). I’m not quite sure whether the cut comes after each 1024bytes/chars of data.

My experience looks as follows:
[xmlFile]
.
slo|�ka
koment|�r slo�ky
.
[/xmlFile]
(Places where the character-data got splitted are marked with pipes. Plus there was latin small letter ‘r’ with caron instead of r.)

Since the splitting is not mentioned in documentation one could assume that it is a bug; especially when you work with UTF-8 and the cuts come right before some special characters.
(Should the concatenating of $cData be considered to be the proper & ‘final’ way of processing character-data?)

Also I’d suggest to add another line in «Description» when fc has an alternate usage (instead of hiding it within the «Note» :o); in this particular case I’d prefer this:

Description:
bool xml_set_character_data_handler ( resource parser, callback handler )
bool xml_set_character_data_handler ( resource parser, object reference, method name )

. there are dozens of functions ofcourse where documentation works this way (I mean not mentioning the alternate usage in the «Description» part).

Have a nice day
Yaroukh

re. to Philippe Marc , and karuna_gadde examples

i found out that the xml_set_character_data_handler call back function can be called more often for the same element in particular the content is just a few chars long (happen on windows)

so a check up can give you the answer an may be for long strings too.
eg:
( $this -> parser , «cdata» );
//.
function cdata ( $parser , $cdata ) <
// .
if(isset( $this -> data [ $this -> currentItem ][ $this -> currentField ])) <
$this -> data [ $this -> currentItem ][ $this -> currentField ] .= $cdata ;
> else <
$this -> data [ $this -> currentItem ][ $this -> currentField ] = $cdata ;
>
?>

How to overide the 1024 characters limitation of xml_set_character_data_handler.
Took me some time to find out how to deal with that!

When calling a basic XML parser:
$parseurXML = xml_parser_create();
xml_set_element_handler($parseurXML, «opentagfunction», «closetagfunction»);
xml_set_character_data_handler($parseurXML, «textfunction»);

The textfunction only receive 1024 characters at once, even if the text is 4000 characters long. In facts, the parser seems to split the data in pieces of 1024 characters. The way to handle that is to concatenate them.

example:
If you have an XML tag called UNIPROT_ABSTRACT containing a 4000 characters protein description:
function textfunction($parser, $text)
<
if ($last_tag_read==’UNIPROT_ABSTRACT’) $uniprot.=$text;
>
The function is called 4 times and receives 1024+1024+1024+928 characters that will be concatenated in the $uniprot variable using the «.=» concatenation fonction.

Easy to do, but not documented!

If you need to trim the white space for HTML code and don’t rely on spaces for formatting text (if you are then it is time to use Style Sheets) then this code will come in very useful.

var $att ;
var $id ;
var $title ;
var $content ;
var $index =- 1 ;
var $xml_parser ;
var $tagname ;

function parser ()
<
$file = «data.xml» ;
$this -> xml_parser = xml_parser_create ();
xml_set_object ( $this -> xml_parser , $this );
xml_set_element_handler ( $this -> xml_parser , «startElement» , «endElement» );
xml_set_character_data_handler ( $this -> xml_parser , ‘elementContent’ );
if (!( $fp = fopen ( $file , «r» ))) <
die( «could not open XML input» );
>

while ( $data = fread ( $fp , 4096 )) <
$data = eregi_replace ( «>» . «[[:space:]]+» . » , «> , $data );
if (! xml_parse ( $this -> xml_parser , $data , feof ( $fp ))) <
die( sprintf ( «XML error: %s at line %d» ,
xml_error_string ( xml_get_error_code ( $this -> xml_parser )),
xml_get_current_line_number ( $this -> xml_parser )));
>
>
xml_parser_free ( $this -> xml_parser );
>

function startElement ( $parser , $name , $attrs ) <
if (( $name == «TREE» ) or ( $name == «NODE» ) or ( $name == «LEAFNODE» ))
<
$this -> index ++;
$this -> att [ $this -> index ]= $name ;
>
$this -> tagname = $name ;
>

function elementContent ( $parser , $data ) <
switch ( $this -> tagname )
<
case ‘ID’ :
$this -> id [ $this -> index ]= trim ( $data );
break;
case ‘TITLE’ :
$this -> title [ $this -> index ]= trim ( $data );
//echo $data;
break;
case ‘CONTENT’ :
$this -> content [ $this -> index ]= trim ( $data );
break;

>
>
function endElement ( $parser , $name ) <
$this -> tagname == «» ;
>
>
?>

I thought this class is more help full to know about xml_parser with no white spaces

This is an addition to the note posted by:
wiart at yahoo dot com
22-Aug-2003 05:31
Which is located below.

I had similar problems manually creating XML docs and adding new-lines within my node data, e.g.

.

Here is some data. There is a lot of data, and I want to
be able to read the data from a terminal window, so I add
newlines to fit everything within 80 columns.

.

So, given the above example, my data handler gets called 3 times and the result left in my variable is:

«newlines to fit everything within 80 columns.»

Instead of all of the data within «node», which I was expecting.

By using the concatenation operator; however, as suggested by the mentioned note, I was able to get what I needed. Which is of course:

«Here is some data. There is a lot of data, and I want to be able to read the data from a terminal window, so I add newlines to fit everything within 80 columns.»

I just want to mention that i ran into a problem when parsing an xml file using the character data handler. If you happen to have a string which is also an internal php function stored in your xml data file and you want to output it as a string the parser dosent seem to recognize it.
I found a way around this problem. In my case i was storing a string with the value read. This would not allow me to output the data so to work around this problem i added a backslash for every character in the data element.

e.g.
from read
to ////read

i dont know if anyone has ran into this problem or not but i thought i would just put it here just so in case someone is getting stuck with this.

WARNING .
Always use concatenation for getting the content of a XML tag when you write the function that will deal with the Character Data handling

$mycontent = »;
$xml_parser = xml_parser_create ();
xml_set_character_data_handler($xml_parser, «_characterdata»);

function _characterdata($parser, $data) <
global $mycontent;
//HERE: use .= and not =
$mycontent .= $data;
>

while ($data = fread($fp, 4096)) <
xml_parse($xml_parser, $data, feof($fp));
>

I had the following problem with the use of ‘=$data’ :

In one of my XML documents, the parsing stopped in the middle of a character data :

In original document:

10[parsing stopped here in chunck of 4096bytes]0

As I did not use the concatenation, when I displayed the value of the ‘nbres’ property, the value was 0 instead of 100 because the first time the function characterdata was called :
$mycontent = 10;

and the second time:
$mycontent = 0; //. HO HO !! some problem occured .

Instead of $mycontent = 100;

CONCLUSION:
IN YOUR CHARACTER DATA HANDLER FUNCTIONS, NEVER FORGET THE . (concatenation operator) . IF YOU DON’T WANT TO HAVE WEIRD BUGS SOME TIMES

Thanks to Christian Stocker for clearing up my entity issues, where some entities are parsed correctly and others not.

The problem is the »wide» entities that have a large numeric code simply can not fit in a single byte, which is the default encoding for both source input to the parser and data output from the parser. So the parser puts out a »?» to say it could not store the code value. One could argue that if the input has a &1234; the output should simply copy it as &1234; instead of the »?» but that would still mean the parser behaves two different ways according to the code values, and anyway they don’t do it.

So, we need utf8 encoding for the output, and the slightly not obvious way to say so is

$xml_parser = xml_parser_create («UTF-8»);

which means BOTH source input and data output are utf8.
Remember that utf8 is a superset of basic ASCII but not of extended ASCII, so your input can contain e.g. e
spelled out, but a native eacute character is wrong here.
Just utf8_encode your input to be sure.

That should do it, and thanks again for the help.

Here are two ways to deal with named entities in the XML.

1. Put a list of named entities at the front so the parser knows what they all mean

This works fine for all the single-byte (European) codes,
but not the wide codes like emdash or frac18.
They seem to be trashed when the character data handler gets them. They all echo as «?»

There may be a way to make them work, but until I find it,
or a newer release takes care of it, here is a work-around that does work.

2. Rewrite every ampersand as & in the input stream

Now the parser will see &foo; instead of &foo;

It does not try to decode it, so wide (two byte) values are not a problem, and no list of names is needed.

When you write that to your output you have &foo;

which is usually fine for the next stage of your process.

In some cases it’s better to avoid storing data which is not needed. In these cases the function

chop() ( => Alias of function rtrim() )

could be usefull to prevent data like

to be stored in a array or a string or something like this.

Example: (storing data in a string)
________________
$filename=»xyz.xml»;

if(!($fp=fopen($filename,»r»))) <
die(«Cannot open $filename «);
>

while (!feof($fp))
<
$data .= chop(fgets($fp, 4096));
>

Here’s a way to strip all the spaces between tags in an xml document.

//strip white space between tags
$data=eregi_replace(«>».»[[:space:]]+».»

Waldo

would be changed to:

It was useful to me. Maybe you too?

the function handler is called several times when it parses the character data. It doesn’t return the entire string as it suggests. There are special exceptions that will always force the parser to stop scanning and call the character data handler. This is when:

— The parser runs into an Entity Declaration, such as & (&) or ‘ (�)
— The parser finishes parsing an entity
— The parser runs into the new-line character (\n)
— The parser runs into a series of tab characters (\t)

And perhaps others.

For instance, if we have this xml content:

Ken has been Positive Edge’s Chief Technology Officer for 2 years.

The parser will call the character data handler 6 times. This is what will happen:

1 \n
2 \t
3 Ken has been Positive Edge
4 �
5 s Chief Technology Officer for 2 years.
6 \n

I hope that helps people out.

If you want to strip unwanted whitespace in an HTML-like manner then there are two steps.

The first you need to strip consecutive whitespaces from all you input data like this: $data = eregi_replace ( «[[:space:]]+», » «, $data );

Then in your cdata handler make a check to see if it’s blank space. An easy way is like this: if ( trim ( $cdata ) )

That should take care of any whitespace issues you might have.

��� ����� ��� xml_set_character_data_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_character_data_handler — set up character data handler

Description bool xml_set_character_data_handler ( resource parser, callback handler)

Sets the character data handler function for the XML parser parser . handler is a string containing the name of a function that must exist when xml_parse() is called for parser .

The function named by handler must accept two parameters: handler ( resource parser, string data)

The first parameter, parser , is a reference to the XML parser calling the handler.

The second parameter, data , contains the character data as a string.

If a handler function is set to an empty string, or FALSE , the handler in question is disabled.

TRUE is returned if the handler is set up, FALSE if parser is not a parser.

Note: Instead of a function name, an array containing an object reference and a method name can also be supplied.

WARNING .
Always use concatenation for getting the content of a XML tag when you write the function that will deal with the Character Data handling

$mycontent = »;
$xml_parser = xml_parser_create ();
xml_set_character_data_handler($xml_parser, «_characterdata»);

function _characterdata($parser, $data) <
global $mycontent;
//HERE: use .= and not =
$mycontent .= $data;
>

while ($data = fread($fp, 4096)) <
xml_parse($xml_parser, $data, feof($fp));
>

I had the following problem with the use of ‘=$data’ :

In one of my XML documents, the parsing stopped in the middle of a character data :

In original document:

10[parsing stopped here in chunck of 4096bytes]0

As I did not use the concatenation, when I displayed the value of the ‘nbres’ property, the value was 0 instead of 100 because the first time the function characterdata was called :
$mycontent = 10;

and the second time:
$mycontent = 0; //. HO HO !! some problem occured .

Instead of $mycontent = 100;

CONCLUSION:
IN YOUR CHARACTER DATA HANDLER FUNCTIONS, NEVER FORGET THE . (concatenation operator) . IF YOU DON’T WANT TO HAVE WEIRD BUGS SOME TIMES

Thanks to Christian Stocker for clearing up my entity issues, where some entities are parsed correctly and others not.

The problem is the »wide» entities that have a large numeric code simply can not fit in a single byte, which is the default encoding for both source input to the parser and data output from the parser. So the parser puts out a »?» to say it could not store the code value. One could argue that if the input has a &1234; the output should simply copy it as &1234; instead of the »?» but that would still mean the parser behaves two different ways according to the code values, and anyway they don’t do it.

So, we need utf8 encoding for the output, and the slightly not obvious way to say so is

$xml_parser = xml_parser_create («UTF-8»);

which means BOTH source input and data output are utf8.
Remember that utf8 is a superset of basic ASCII but not of extended ASCII, so your input can contain e.g. e
spelled out, but a native eacute character is wrong here.
Just utf8_encode your input to be sure.

That should do it, and thanks again for the help.

Here are two ways to deal with named entities in the XML.

1. Put a list of named entities at the front so the parser knows what they all mean

This works fine for all the single-byte (European) codes,
but not the wide codes like emdash or frac18.
They seem to be trashed when the character data handler gets them. They all echo as «?»

There may be a way to make them work, but until I find it,
or a newer release takes care of it, here is a work-around that does work.

2. Rewrite every ampersand as & in the input stream

Now the parser will see &foo; instead of &foo;

It does not try to decode it, so wide (two byte) values are not a problem, and no list of names is needed.

When you write that to your output you have &foo;

which is usually fine for the next stage of your process.

In some cases it’s better to avoid storing data which is not needed. In these cases the function

chop() ( => Alias of function rtrim() )

could be usefull to prevent data like

to be stored in a array or a string or something like this.

Example: (storing data in a string)
________________
$filename=»xyz.xml»;

if(!($fp=fopen($filename,»r»))) <
die(«Cannot open $filename «);
>

while (!feof($fp))
<
$data .= chop(fgets($fp, 4096));
>

Here’s a way to strip all the spaces between tags in an xml document.

//strip white space between tags
$data=eregi_replace(«>».»[[:space:]]+».»

Waldo

would be changed to:

It was useful to me. Maybe you too?

the function handler is called several times when it parses the character data. It doesn’t return the entire string as it suggests. There are special exceptions that will always force the parser to stop scanning and call the character data handler. This is when:

— The parser runs into an Entity Declaration, such as & (&) or ‘ (?
— The parser finishes parsing an entity
— The parser runs into the new-line character (\n)
— The parser runs into a series of tab characters (\t)

And perhaps others.

For instance, if we have this xml content:

The parser will call the character data handler 6 times. This is what will happen:

1 \n
2 \t
3 Ken has been Positive Edge
4 ?br /> 5 s Chief Technology Officer for 2 years.
6 \n

I hope that helps people out.

If you want to strip unwanted whitespace in an HTML-like manner then there are two steps.

The first you need to strip consecutive whitespaces from all you input data like this: $data = eregi_replace ( «[[:space:]]+», » «, $data );

Then in your cdata handler make a check to see if it’s blank space. An easy way is like this: if ( trim ( $cdata ) )

That should take care of any whitespace issues you might have.

PHP xml_set_character_data_handler() Function

����������� � �������������

xml_set_character_data_handler() ������� ������������� ���������� ������ �������� ��� XML — �����������.

��� ������� ����������, ����� ������� ����� �������, ����� ���������� ������� ���������� ������ � ����� XML.

��� ������� ���������� �������� TRUE � ������ ��������� ���������� ��� FALSE � ������ ������������� ������.

���������

�������� ��������
parser �����������. ��������� XML-������, ����� ������������
handler �����������. ���������� �������, ������� ����� �������������� � �������� ����������� �������

������� �������� «handler» �������� ������ ����� ��� ���������:

�������� ��������
parser �����������. ������ ����������, ���������� XML-���������� ���������� ����������
data �����������. ������ ����������, ���������� ���������� ������ �� ����� XML � ���� ������

������ � ����������

Note: �������� ����������� ����� ���� ����� ������ , ���������� ������ �� ������ � ��� ������.

Илон Маск рекомендует:  IsInfinite - Функция Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL