Caractère spéciaux parsage document XML
Résolu/Fermé
djodjo49
Messages postés
20
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
12 juin 2012
-
5 juin 2012 à 15:39
djodjo49 Messages postés 20 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 12 juin 2012 - 12 juin 2012 à 14:44
djodjo49 Messages postés 20 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 12 juin 2012 - 12 juin 2012 à 14:44
A voir également:
- Caractère spéciaux parsage document XML
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux mac - Guide
- Xml viewer - Télécharger - Édition & Programmation
6 réponses
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
5 juin 2012 à 15:55
5 juin 2012 à 15:55
Bonjour,
Avant de faire ceci:
simplexml_load_file()
vous faites:
$filename='monfichier.xml';
$monFichier = file_get_contents($filename);
$search = 'X' // remplacer X par chaine à rechercher
$replace = 'Y' // remplacer Y par chaine à remplacer
$outFile = str_replace($search, $replace, $monFichier);
$xml = simplexml_load_string($outFile);
A+
Avant de faire ceci:
simplexml_load_file()
vous faites:
$filename='monfichier.xml';
$monFichier = file_get_contents($filename);
$search = 'X' // remplacer X par chaine à rechercher
$replace = 'Y' // remplacer Y par chaine à remplacer
$outFile = str_replace($search, $replace, $monFichier);
$xml = simplexml_load_string($outFile);
A+
djodjo49
Messages postés
20
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
12 juin 2012
5 juin 2012 à 16:02
5 juin 2012 à 16:02
Merci de votre réponse.
Après avoir rajouter votre code:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 595544776 bytes) in ***.php on line 38
La ligne 38: $monFichier = file_get_contents($filename);
J'ai oublié de préciser que le fichier XML pèse 586mo.
Après avoir rajouter votre code:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 595544776 bytes) in ***.php on line 38
La ligne 38: $monFichier = file_get_contents($filename);
J'ai oublié de préciser que le fichier XML pèse 586mo.
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
5 juin 2012 à 16:15
5 juin 2012 à 16:15
cherchez pas....
Vous y arriverez pas....
Car même avec simplexml_load_file vous aurez le même problème.
il y aurait quand même une solution....
C'est d'ouvrir le fichier xml, en lecture seule,
puis de le lire ligne à ligne,
voir si la ligne contient ce caractère qui vous embête,
et réécrire dans un autre fichier toutes les lignes lues, y compris celles corrigées...
voir ces fonctions:
fgets() et fputs()
ATTENTION, il faut gérer deux tickets (handle) de fichiers distincts:
un ticket pour le fichier origine en lecture seule
un ticket différent pour réécrire dans un autre fichier via fputs()
Après cette manoeuvre essayez le simplexml_load_file, mais je pense que le souci d'allocation mémoire perdurera
A+
Vous y arriverez pas....
Car même avec simplexml_load_file vous aurez le même problème.
il y aurait quand même une solution....
C'est d'ouvrir le fichier xml, en lecture seule,
puis de le lire ligne à ligne,
voir si la ligne contient ce caractère qui vous embête,
et réécrire dans un autre fichier toutes les lignes lues, y compris celles corrigées...
voir ces fonctions:
fgets() et fputs()
ATTENTION, il faut gérer deux tickets (handle) de fichiers distincts:
un ticket pour le fichier origine en lecture seule
un ticket différent pour réécrire dans un autre fichier via fputs()
Après cette manoeuvre essayez le simplexml_load_file, mais je pense que le souci d'allocation mémoire perdurera
A+
djodjo49
Messages postés
20
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
12 juin 2012
5 juin 2012 à 16:17
5 juin 2012 à 16:17
D'accord, merci quand même d'avoir consacré votre temps à essayé de m'aider.
Bonne journée à vous.
Cordialement.
Bonne journée à vous.
Cordialement.
RAD ZONE
Messages postés
5230
Date d'inscription
samedi 20 janvier 2007
Statut
Contributeur
Dernière intervention
17 août 2024
1 360
5 juin 2012 à 17:05
5 juin 2012 à 17:05
Salut
tu peux essayer cette solution ! mais rien ne dis que ca fonctionnera ??
plus de 500Mo c est quand meme enorme !
1 : il faut modifier le php.ini
tu modifie ou ajoute
512 pas assez pour ton fichier alors on essaye 1024
2 : Si tu ne peux pas modifier le php.ini
tu ajoute cette ligne au .htaccess
encore une fois , je ne garantie pas que ca passe !
mais rien n empeche d essayer !
A+
tu peux essayer cette solution ! mais rien ne dis que ca fonctionnera ??
plus de 500Mo c est quand meme enorme !
1 : il faut modifier le php.ini
tu modifie ou ajoute
memory_limit = 1024Mpas de o apres le M !!!
512 pas assez pour ton fichier alors on essaye 1024
2 : Si tu ne peux pas modifier le php.ini
tu ajoute cette ligne au .htaccess
php_value memory_limit 1024M
encore une fois , je ne garantie pas que ca passe !
mais rien n empeche d essayer !
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
djodjo49
Messages postés
20
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
12 juin 2012
6 juin 2012 à 09:38
6 juin 2012 à 09:38
Bonjour,
Je n'ai pas accès au .ini, j'ai donc rajouté la ligne proposée au .htaccess mais ça n'a pas fonctionné.
J'ai également rajouté ini_set('memory_limit','1024M') qui ne marchait guère mieux.
Je pense donc que je vais essayé de réduire la taille du XML.
Merci encore pour vos réponses et bonne journée.
Cordialement.
Je n'ai pas accès au .ini, j'ai donc rajouté la ligne proposée au .htaccess mais ça n'a pas fonctionné.
J'ai également rajouté ini_set('memory_limit','1024M') qui ne marchait guère mieux.
Je pense donc que je vais essayé de réduire la taille du XML.
Merci encore pour vos réponses et bonne journée.
Cordialement.
djodjo49
Messages postés
20
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
12 juin 2012
12 juin 2012 à 14:44
12 juin 2012 à 14:44
Bonjour,
Je me permet de remonter le sujet car j'ai finalement eu accès au php.ini.
j'ai modifié memory_limit = 1024M
Je pensais enfin tenir le bon bout et lors de l'exécution:
Fatal error: Allowed memory size of 1 073 741 824 bytes exhausted (tried to allocate 595 544 776 bytes) in *** on line 44
La ligne 44:
$outFile = str_replace($search, $replace, $monFichier);
Donc je me suis dit qu'il fallait peut-être deux fois les 595 544 776M du fichier XML
J'ai donc mis dans le php.ini:
memory_limit = 2048M
Et le résultat est le suivant:
Fatal error: Out of memory (allocated 595 853 312) (tried to allocate 595 544 776 bytes) in *** on line 44
Si quelqu'un voit de quoi il s'agit...
Cordialement.
Je me permet de remonter le sujet car j'ai finalement eu accès au php.ini.
j'ai modifié memory_limit = 1024M
Je pensais enfin tenir le bon bout et lors de l'exécution:
Fatal error: Allowed memory size of 1 073 741 824 bytes exhausted (tried to allocate 595 544 776 bytes) in *** on line 44
La ligne 44:
$outFile = str_replace($search, $replace, $monFichier);
Donc je me suis dit qu'il fallait peut-être deux fois les 595 544 776M du fichier XML
J'ai donc mis dans le php.ini:
memory_limit = 2048M
Et le résultat est le suivant:
Fatal error: Out of memory (allocated 595 853 312) (tried to allocate 595 544 776 bytes) in *** on line 44
Si quelqu'un voit de quoi il s'agit...
Cordialement.