Ecriture .xml (en php)
BioHaZarD-34
-
avion-f16 Messages postés 19182 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19182 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a tous,
J'ai un fichier .txt dans lequel il y a plusieurs millier de ligne (chaque ligne une urls)
et j'aimerai créer un .xml sitemap (en utilisant le php) avec ce genre d'ossature :
<?xml version="1.0" encoding="UTF-8" ?>
- <urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9/ https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
- <url>
<loc>url1</loc>
</url>
- <url>
<loc>url2</loc>
</url>
...
- <url>
<loc>urln</loc>
</url>
</urlset>
Quelqu'un pourrait-il m'aider car je ne connais la methode pour ecrire un .xml en recuperant les lignes de mon .txt
J'ai un fichier .txt dans lequel il y a plusieurs millier de ligne (chaque ligne une urls)
et j'aimerai créer un .xml sitemap (en utilisant le php) avec ce genre d'ossature :
<?xml version="1.0" encoding="UTF-8" ?>
- <urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9/ https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
- <url>
<loc>url1</loc>
</url>
- <url>
<loc>url2</loc>
</url>
...
- <url>
<loc>urln</loc>
</url>
</urlset>
Quelqu'un pourrait-il m'aider car je ne connais la methode pour ecrire un .xml en recuperant les lignes de mon .txt
Configuration: Windows XP Firefox 2.0.0.20
12 réponses
-
<?php header('Content-type: text/xml; charset=UTF-8'); $dom = new DOMDocument('1.0','utf-8'); $root = $dom->createElement('root'); $lignes = explode("\n", file_get_contents('fichier.txt')); foreach($lignes as $url) { if(!empty($url)) { $urlNode = $dom->createElement('url'); $locNode = $dom->createElement('loc',$url); $urlNode->appendChild($locNode); $root->appendChild($urlNode); } } $dom->appendChild($root); echo $dom->saveXML(); ?>-
par rapport a ta reponse jme demander s'il y avait moyen de prendre calque sur une ossature?
Style : xmlns="https://www.google.com/schemas/sitemap/0.84/"- Ben comme par exemple j'ai cité dans mon post :
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9/ https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
[...]
Une ossature de type sitemap. <?php header('Content-type: text/xml; charset=UTF-8'); $dom = new DOMDocument('1.0','utf-8'); $root = $dom->createElement('urlset'); $root->setAttribute('xmlns','http://www.sitemaps.org/schemas/sitemap/0.9'); $root->setAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance'); $root->setAttribute('xsi:schemaLocation','http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'); $lignes = explode("\n", file_get_contents('fichier.txt')); foreach($lignes as $url) { if(!empty($url)) { $urlNode = $dom->createElement('url'); $locNode = $dom->createElement('loc',$url); $urlNode->appendChild($locNode); $root->appendChild($urlNode); } } $dom->appendChild($root); echo $dom->saveXML(); ?>
-
-
-
-
J'ai cette erreur lors de l'execution :
<b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tried to allocate 117682198 bytes) in <b>W:\var\www\ecriture xml\index.php</b> on line <b>7</b><br />
line 7 : "$lignes = explode("\n", file_get_contents('sitemap.txt'));"
Est-ce un pb avec la fonction file_get_contents ou un fichier .txt trop volumineux (113 Mo) ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
C'est le fichier qui dépasse la taille de traitement autorisée dans le php.ini
Regarde dans la doc ou la faq de ton hébergeur ou contactes-les. -
Je travaille en local =)
Est-ce cette ligne qu'il faudrait que je modifie dans le php.ini :
" memory_limit = 128M; " ou pas? -
Oui
-
J'ai beau changer la valeur de cette ligne dans le php.ini et rien ... Toujours la même erreur :( :
"<b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tried to allocate 117682198 bytes) in <b>W:\var\www\ecriture xml\index.php</b> on line <b>7</b><br />" -
Qu'as-tu mis ? Essaye avec memory_limit = 256M;
-
J'ai essayer 64, 256, 512 et même 1024...
Sa change même pas l'erreur c'est toujours : "...Allowed memory size of 134217728 bytes exhausted (tried to allocate 117682198..." -
Est-ce que tu mets bien le "M" après le chiffre ?
-
- Ben en fait, pour les gros fichiers .txt, j'ai toujours un problème (memory_limit)
Mais sinon ta méthode fonctionne parfaitement, juste il me faudrait rajouter ces ligne en debut de .xml :
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9/ https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
-
-
Pour l'instant la taille du fichier n'est pas importante, j'ai donc essayer avec un fichier moins volumineux.
Mais en fait je voudrais faire en sorte d'avoir un fichiers .xml en sortie.
Je ne voit pas du tout comment faire...
help please...