par
Joce » 31 oct. 2008, 10:38
Bonjour à tous,
J'ai créé une classe vite fait pour ouvrir un fichier xml encodé ISO-8859-1, mais j'ai un problème avec les caractères spéciaux.
Voici ma classe:
class xml {
private $parser;
private $data;
function __construct($data)
{
$this->parser = xml_parser_create('ISO-8859-1');
$this->data = $data;
xml_set_object($this->parser, $this);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
$this->parse();
}
private function parse()
{
xml_parse($this->parser, $this->data);
}
private function tag_open($parser, $tag, $attributes)
{
}
private function cdata($parser, $cdata)
{
echo $cdata . "<br />";
}
private function tag_close($parser, $tag)
{
}
function __destruct()
{
xml_parser_free($this->parser);
}
} // fin de la classe xml
$xml_parser = new xml(file_get_contents("xml.xml"));
et voici mon fichier xml
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1" ?>
<personnes>
<personne>
<nom>Dupénd</nom>
<service>Achaté</service>
</personne>
<personne>
<nom>Durand</nom>
<service>Achéts</service>
</personne>
<personne>
<nom>Dupuis</nom>
<service>Courrier</service>
</personne>
</personnes>
Voila la réponse que j'ai :
Code : Tout sélectionner
Dup<br />
énd<br />
Achat<br />
é<br />
Durand<br />
Ach<br />
éts<br />
Dupuis<br />
Courrier<br />
Hormis les br intempestifs, il me coupe les noms avec des caractères spéciaux
Avez-vous une solution ?
Merci
Joce
Bonjour à tous,
J'ai créé une classe vite fait pour ouvrir un fichier xml encodé ISO-8859-1, mais j'ai un problème avec les caractères spéciaux.
Voici ma classe:
[php]
class xml {
private $parser;
private $data;
function __construct($data)
{
$this->parser = xml_parser_create('ISO-8859-1');
$this->data = $data;
xml_set_object($this->parser, $this);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
$this->parse();
}
private function parse()
{
xml_parse($this->parser, $this->data);
}
private function tag_open($parser, $tag, $attributes)
{
}
private function cdata($parser, $cdata)
{
echo $cdata . "<br />";
}
private function tag_close($parser, $tag)
{
}
function __destruct()
{
xml_parser_free($this->parser);
}
} // fin de la classe xml
$xml_parser = new xml(file_get_contents("xml.xml"));
[/php]
et voici mon fichier xml
[code]
<?xml version="1.0" encoding="ISO-8859-1" ?>
<personnes>
<personne>
<nom>Dupénd</nom>
<service>Achaté</service>
</personne>
<personne>
<nom>Durand</nom>
<service>Achéts</service>
</personne>
<personne>
<nom>Dupuis</nom>
<service>Courrier</service>
</personne>
</personnes>
[/code]
Voila la réponse que j'ai :
[code]
Dup<br />
énd<br />
Achat<br />
é<br />
Durand<br />
Ach<br />
éts<br />
Dupuis<br />
Courrier<br />
[/code]
Hormis les br intempestifs, il me coupe les noms avec des caractères spéciaux :?
Avez-vous une solution ?
Merci
Joce