Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2011, 21h10   #1
Invité de passage
 
Homme albert durand
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme albert durand
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 7
Points : 3
Points : 3
Par défaut XML encoding="ISO-8859-1" vers php

bonjour à tous,

je veux exploité un fichier XML avec du PHP, mais le souci est que le fichier XML est encoding="ISO-8859-1"
donc je n'arrive pas a récupéré des nœud XML qui intègre des accents
est ce que quelqu’un pourrais m'aider sur ce point
merci d’avance
albert12345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 21h13   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Peu importe l'encodage initial du document XML, il se manipule après exclusivement en UTF-8 côté PHP (dom, domxml, simplexml, ... - toutes les extensions qui reposent sur libxml2). Comment, sinon, permettre à un chinois ou je ne sais quoi, de pouvoir modifier le document ensuite comme il le veut ?

Exemple, avec SimpleXML : soit vous encodez votre script en UTF-8 pour écrire directement $sxml->prénom par exemple (grandement préférable) sinon, avec un script en ISO-8859-1, ça vous oblige à faire, un truc de ce genre : $sxml->{utf8_encode('prénom')} à chaque fois.

(et c'est de l'UTF-8 qui vous est renvoyé)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 22h09   #3
Invité de passage
 
Homme albert durand
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme albert durand
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 7
Points : 3
Points : 3
les balises qui me posent problème sont les suivantes :
<unité>Organigramme</unité>
<prénom>Xavier</prénom>
comment les récupérer en PHP
merci encore de votre aide .
albert12345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 23h05   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Va relire un fichier structuré comme XML, sans indentation, ...

Quel est votre code ? En outre, on ne sait même pas sur quelle extension vous vous êtes orienté : si vous êtes parti sur DOM, par exemple, inutile qu'on aille sur SimpleXML, non ?

Code :
1
2
3
4
5
6
7
8
9
<?php
$sxml = simplexml_load_file('monfichier.xml');
 
foreach ($sxml->A2->A2B->Utilisateur as $u) {
    // Si script en UTF-8 (sortie supposée en UTF-8)
    echo $u->prénom;
    // Si script en ISO-8859-1 (sortie supposée en ISO-8859-1)
    echo utf8_decode($u->{utf8_encode('prénom')});
}
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$dom = new DomDocument;
//$dom->preserveWhiteSpace = FALSE;
$dom->load('monfichier.xml');
 
foreach ($dom->getElementsByTagName('Utilisateur') as $u) {
    // Si le script est en UTF-8 (sortie supposée en UTF-8)
    $prenom = $u->getElementsByTagName('prénom')->item(0);
    echo $prenom->nodeValue;
    // Si le script est en ISO-8859-1 (sortie supposée en ISO-8859-1)
    $prenom = $u->getElementsByTagName(utf8_encode('prénom'))->item(0);
    echo utf8_decode($prenom->nodeValue);
}
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 23h18   #5
Invité de passage
 
Homme albert durand
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme albert durand
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 7
Points : 3
Points : 3
ça marche super en SimpleXML merci encore
pas d'erreur

en DOM aussi c'est super ça marche bien

// Si le script est en UTF-8 (sortie supposée en UTF-8)
$prenom = $u->getElementsByTagName('prénom')->item(0);
echo $prenom->nodeValue;

génère une erreur si le fichier XML de départ est en ISO-8859-1
Notice: Trying to get property of non-object in xxx.php on line 10

encore une fois de plus merci

voila le code épurer

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<A>
	<A1>
	</A1>	
	<A2>
		<A2A>
		</A2A>
		<A2B>
			<A2B1>
			</A2B1>
			<Utilisateur>
				<prénom>Jean</prénom>
			</Utilisateur>
			<Utilisateur>
				<prénom>Jacques</prénom>
			</Utilisateur>
		</A2B>
	</A2>	
</A>
albert12345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h12.


 
 
 
 
Partenaires

Hébergement Web