IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] Extraire des données


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut [XML] Extraire des données
    Bonjour,
    Je cherche à extraire ce genre de données :
    Code html : 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
    <section itemtype="http://schema.org/LocalBusiness">
    <h2 itemprop="name"><a href="">NOM ENTREPRISE 1</a></h2>
    <address class="addr" itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">
    <span itemprop="streetAddress">ADRESSE 1</span>
    <span itemprop="postalCode">CP 1</span>
    <span itemprop="addressLocality">VILLE 1</span>
    </address>
    <p class="telephone" itemprop="telephone">TEL 1</p>
    </section>
     
    <section itemtype="http://schema.org/LocalBusiness">
    <h2 itemprop="name"><a href="">NOM ENTREPRISE 2</a></h2>
    <address class="addr" itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">
    <span itemprop="streetAddress">ADRESSE 2</span>
    <span itemprop="postalCode">CP 2</span>
    <span itemprop="addressLocality">VILLE 2</span>
    </address>
    <p class="telephone" itemprop="telephone">TEL 2</p>
    </section>

    J'ai pour le moment ce code :
    Code php : 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
    $dom = new DomDocument;
    $dom -> loadHTML($url);
    $coords = [];
    $xpath = new DomXPath($dom);
    $current = [];
     
    foreach ($xpath->query('//*[@itemtype="http://schema.org/LocalBusiness"]') as $n) {
    	foreach ($xpath->query('//*[@itemprop and not(@itemtype)]', $n) as $prop) {
    		$current[$prop->getAttribute('itemprop')] = $prop->nodeValue;
    	}
    	$coords[] = (object) $current;					
    }
     
    echo "<hr />Résultats : <br /><br />";
    foreach ($coords as $c) {
    	echo $c->name . ' : ' . $c->streetAddress . $c->postalCode . $c->addressLocality . $c->telephone . '<br />';
    }

    le problème, c'est qu'il me renvoie 2 fois la même donnée comme si il y avait un écrasement.

    Voici :

    Résultats :
    NOM ENTREPRISE 2 : ADRESSE 2CP 2VILLE 2TEL 2
    NOM ENTREPRISE 2 : ADRESSE 2CP 2VILLE 2TEL 2
    Merci de votre aide
    Vincent Pieplu
    Développeur Site Internet

  2. #2
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    En fait, c'est
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $current[$prop->getAttribute('itemprop')]
    Qui a toujours la même valeur, mais comment modifier ?
    Dois-je ajouter un $i qui s'incrémente ?
    Vincent Pieplu
    Développeur Site Internet

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Pour proprement reflétant le noeud de contexte, il doit être ça.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //foreach ($xpath->query('//*[@itemprop and not(@itemtype)]', $n) as $prop) {
    foreach ($xpath->query('.//*[@itemprop and not(@itemtype)]', $n) as $prop) {

Discussions similaires

  1. Extraire des données d'un fichier XML
    Par ultimate_manx dans le forum XML
    Réponses: 1
    Dernier message: 28/11/2007, 18h03
  2. Réponses: 4
    Dernier message: 17/01/2007, 09h09
  3. extraire des données d'un doc pas tout a fait xml
    Par chrix10.2 dans le forum Général Python
    Réponses: 1
    Dernier message: 21/12/2006, 18h59
  4. Réponses: 2
    Dernier message: 20/10/2006, 10h49
  5. [xml] comment extraire des donnés xml
    Par Lodos dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 20/04/2006, 21h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo