Bonjour!

Voilà j'ai un problème d'encodage lié à DOM et XML.

En effet, j'ai un fichier XML nommé Form.xml qui contient la descriptions (labels & messages d'erreurs) d'un formulaire.

Dans se fichier , les descriptions sont en encoding "ISO-8859-1" et le contenu contient donc des accents.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="ISO-8859-1"?>
<listForm>
	<form name='Subscription'>
		<labels>
			<label input='mail'>E-Mail</label>
			<label input='login'>Identifiant</label>
			<label input='password1'>Mot de passe</label>
			<label input='password2'>Confirmation mot de passe</label>
			<label input='captcha'>Etes vous humain ?éèàùï</label>
		</labels>
		<errors>
			<error input='mail' name='emailAdresseInvalid'>L adresse E-mail que vous avez entré est invalide.</error>
			<error input='mail' name='isEmpty'>Veuillez saisir un E-mail.</error>
			<error input='mail' name='match'>Cet E-mail est déjà utilisé.</error>
			<error input='login' name='isEmpty'>Veuillez saisir un Identifiant.</error>
			<error input='login' name='match'>Cet Identifiant est déjà utilisé.</error>
			<error input='password1' name='isEmpty'>Veuillez saisir un Mot de passe.</error>
			<error input='password2' name='isEmpty'>Veuillez saisir le Mot de passe de confirmation.</error>
			<error input='password2' name='notEqual'>Les mots de passe ne sont pas identiques.</error>
			<error input='captcha' name='badCaptcha'>Le code entré est faux.</error>
			<error input='captcha' name='missingValue'>Vous devez saisir le code affiché à l écran.</error>
		</errors>
	</form>
</listForm>
Pour récupérer le contenu des données j'utilise le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
class WoG_XML
{
	public $dom;
 
	public function __construct()
	{
 
		$this->dom = new DOMDocument('1.0' ,'ISO-8859-1');
		if(!$this->dom->load( XMLFILES_PATH.'/'.$this->fileName  ))
		{
			echo "Error: Loading file $this->fileName";
		}
 
 
	}
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
 
class WoG_XML_Form extends WoG_XML
{
	public $fileName = 'Form.xml';
	public $formName;
	private $form;
 
	public function setFormName($formName)
	{
		$this->formName = $formName;
		$this->getForm();
 
	}
 
	private function getForm()
	{
		$forms = $this->dom->getElementsByTagName('form');
		foreach($forms as $form)
		{
		 if($form->getAttribute('name') == $this->formName) $this->form = $form;
		}
 
 
	}
 
	public function getLabel($labelName)
	{
 
		$labels = $this->form->getElementsByTagName('label');
		for($i=0; $i<$labels->length;$i++)
		{
			$label = $labels->item($i);
			$input = $label->getAttribute('input');
			if($input == $labelName)
			{
				return  $label->nodeValue;
			}
			elseif($i == ($labels->length-1)) return "Error : Label not found in the file $this->fileName";
		}
 
	}
 
}
Donc lorsque je récupère les informations depuis mon fichier Form.xml, j'obtiens l'affichage suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
E-Mail	
Identifiant	
Mot de passe	
Confirmation mot de passe	
Êtes vous humain ?éÚàùÃÂ
Le problème vient du fait que je souhaites afficher les accents.

J'ai regarder au niveau de la documentation de DOM où il en ressort qu'il faut venir encoder en utf8 les données présentes dans le fichier XML pour ensuite les décoder lors de la récupération.

Le problème c'est que se fichier à pour but d'être créé à la main, et il n'est pas pratique d'encoder les accents en utf8 à la main.

Donc ma question est la suivante, il y a t'il une solution pour récupérer dans le bon encodage soit "ISO-8859-1" les informations de mon fichier XML depuis DOM?

Merci, d'avoir pris le temps de lire.