Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
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 24/11/2010, 15h06   #1
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 493
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 493
Points : 304
Points : 304
Par défaut [DOM] Récupération de donnée en fonction de la valeur d'un attribut

Bonjour,

Voici le tableau que j'aimerais parcourir pour y récupérer toute les informations :
Code :
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
45
46
47
48
49
50
51
<h2 class="title_lowercase">MATERIEL 1</h2>


<h2>Général</h2>
<div class="carac">
	<table class="description">
        <tr>
            <td>Info 1</td>
            <td class="td-desc">Valeur 1</td>
        </tr>
        <tr>
            <td>Info 2</td>
            <td class="td-desc">Valeur 2</td>
        </tr>
	</table>
</div>

<h2>Configuration</h2>
     <h3 class="Cartegraphique">CG</h3>
        <table class="Information">
            <tr>
                <td>Info 1</td>
                <td class="td-desc">Valeur 1.1</td>
                <td class="td-desc">Valeur 1.2</td>
                <td class="td-desc">Valeur 1.3</td>
                <td class="td-desc">Valeur 1.4</td>
            </tr>
            <tr>
                <td>Info 2</td>
                <td class="td-desc">Valeur 2.1</td>
                <td class="td-desc">Valeur 2.2</td>
                <td class="td-desc">Valeur 2.3</td>
                <td class="td-desc">Valeur 2.4</td>
            </tr>
        </table>

     <h3 class="Cartemère">CM</h3>
        <table class="Information">
            <tr>
                <td>Info 1</td>
                <td class="td-desc">Valeur 1.1</td>
                <td class="td-desc">Valeur 1.2</td>
                <td class="td-desc">Valeur 1.3</td>
            </tr>
            <tr>
                <td>Info 2</td>
                <td class="td-desc">Valeur 2.1</td>
                <td class="td-desc">Valeur 2.2</td>
                <td class="td-desc">Valeur 2.3</td>
            </tr>
       </table>
Voici comment je pourrais m'y prendre :

Séparer le premier tableau des autres tableaux grâce à "<table class="description">"
Récupérer les infos et les valeurs dans un tableau.

Séparer les deux (ou plus) autres tableaux grâce à "<h3 class="Cartemère">CM</h3>"
Récupérer les infos et les valeurs dans un tableau.

Question :
Est-il possible de faire ca avec DOM ?
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 15h32   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 090
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 090
Points : 8 452
Points : 8 452
oui c'est possible DOMDocument + DOMXPath
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 09h07   #3
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 134
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 134
Points : 2 877
Points : 2 877
un p'tit exemple pour le fun :
Code :
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
 
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<body>
    <h2 class="title_lowercase">MATERIEL 1</h2>
    <h2>Général</h2>
 
    <div class="carac">
    	<table class="description">
            <tr>
                <td>Info 1</td>
                <td class="td-desc">Valeur 1</td>
            </tr>
            <tr>
                <td>Info 2</td>
                <td class="td-desc">Valeur 2</td>
            </tr>
    	</table>
    </div>
 
    <h2>Configuration</h2>
 
    <h3 class="Cartegraphique">CG</h3>
 
    <table class="Information">
        <tr>
            <td>Info 1</td>
            <td class="td-desc">Valeur 1.1</td>
            <td class="td-desc">Valeur 1.2</td>
            <td class="td-desc">Valeur 1.3</td>
            <td class="td-desc">Valeur 1.4</td>
        </tr>
        <tr>
            <td>Info 2</td>
            <td class="td-desc">Valeur 2.1</td>
            <td class="td-desc">Valeur 2.2</td>
            <td class="td-desc">Valeur 2.3</td>
            <td class="td-desc">Valeur 2.4</td>
        </tr>
    </table>
 
    <h3 class="Cartemère">CM</h3>
    <table class="Information">
        <tr>
            <td>Info 1</td>
            <td class="td-desc">Valeur 1.1</td>
            <td class="td-desc">Valeur 1.2</td>
            <td class="td-desc">Valeur 1.3</td>
        </tr>
        <tr>
            <td>Info 2</td>
            <td class="td-desc">Valeur 2.1</td>
            <td class="td-desc">Valeur 2.2</td>
            <td class="td-desc">Valeur 2.3</td>
        </tr>
    </table>
</body>';
 
$doc = new DOMDocument;
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
 
$caracteristiques = array(); // info => valeur
$caracteristiques_entries = $xpath->query('//table[@class="description" and position() = 1]/tr');
 
foreach($caracteristiques_entries as $entry){
    $caracteristiques[$entry->childNodes->item(1)->nodeValue] = $entry->childNodes->item(3)->nodeValue;
}
 
var_dump($caracteristiques);
la requête XPath pour les autres tableaux serait du style :
Citation:
//h3/following-sibling::table[1]/tr
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2010, 11h59   #4
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 493
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 493
Points : 304
Points : 304
Je viens de découvrir Xpath !! C'est génial.

Voici un cours : http://jerome.developpez.com/xmlxsl/...lpage=exemples
Space Cowboy 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 16h16.


 
 
 
 
Partenaires

Hébergement Web