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 :

[DOM XML] XMLDOM et PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 70
    Points : 52
    Points
    52
    Par défaut [DOM XML] XMLDOM et PHP
    Bonjour,

    J'ai un document XML test.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0"?>
     
    <Workbook >
      <title>le titre</title>
    </Workbook>
    Et du code PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $dom = new DomDocument();
    $dom->load( "test.xml" );
    $xpath = new DomXpath( $dom );
    $result = $xpath->query( "/Workbook/title" );
    if( $result->item( 0 ) ) {    $title = $result->item( 0 );
        echo "Le titre du livre est : " . $title->nodeValue . "\n";}   else{    echo "aucun résultat\n";} 
      ?>
    Lorsque j'execute le code suivant : tout fonctionne bien, le résultat adffiche "Le titre du livre est : le titre.

    Par contre , et c'est le cas de mon document xml, lorsque j'ai l'attribut xmlns dans la balise <Workbook>:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0"?>
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">
      <title>le titre</title>
    </Workbook>
    Plus rien ne fonctionne : le résultat est "aucun résultat".

    Si vous pouviez éclairer ma lanterne...

    Ceci dans le but de récupérer des fichiers excel enregistrézs au format XML et impacter ma base de données avec .

    Merci,

    Lionel.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    problème déjà exposé et solutionné ici : http://www.developpez.net/forums/vie...240959#2240959

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    Merci pour cette réponse j'ai essayé de la mettre en oeuvre mais ça ne fonctionne pas mieux on dirait (je pense que c'est surtout que j'ai du mal à la mettre en place):

    Pour shématiser mon document excel au format XML a la structure suivante:

    Code : 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
    20
     
    <?xml version="1.0"?> 
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
     xmlns:o="urn:schemas-microsoft-com:office:office" 
     xmlns:x="urn:schemas-microsoft-com:office:excel" 
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
     xmlns:html="http://www.w3.org/TR/REC-html40"> 
     
      <Worksheet ss:Name="Statut juridique">
        <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="9" x:FullColumns="1"  x:FullRows="1" ss:StyleID="s25" ss:DefaultColumnWidth="60">
          <Row>
             <Cell><Data ss:Type="String">Individuel</Data></Cell>
          </Row>
          <Row>
            <Cell><Data ss:Type="String">SCEA</Data></Cell>
           </Row>
        </Table>
      </Worksheet>
     
    </Workbook>

    Et j'aimerais accéder au contenu des cellules <Cell> de mon document XML depuis du code PHP, j'ai donc modifié le code en rajoutant les déclarations:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $dom = new DomDocument(); 
    $dom->load( "test.xml" ); 
    $xpath = new DomXpath( $dom ); 
    $xpath->registerNamespace('o', 'urn:schemas-microsoft-com:office:office'); 
    $xpath->registerNamespace('x', 'urn:schemas-microsoft-com:office:excel'); 
    $xpath->registerNamespace('ss', 'urn:schemas-microsoft-com:office:spreadsheet');
    $xpath->registerNamespace('html', 'http://www.w3.org/TR/REC-html40');
     
    $str_nodes = "//Workbook/Worksheet[@ss:Name='Statut juridique']/Table/Row";
    $liste = $xpath->query($str_nodes);
    foreach ($liste as $entry)
    {   
       echo "une ligne";
    };
    Mais ça ne fonctionne pas mieux, je n'arrive pas à accéder à du contenu. :o/

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Parce que tu n'as pas tout lu jusqu'au bout...

    Tous les éléments de ton XML appartiennent au namespace par défaut urn:schemas-microsoft-com:office:spreadsheet. Il faut que tu utilises le préfixe désignant cet espace de nom, que tu as déclaré dans registerNamespace(), dans ta requête XPath si tu veux sélectionner les éléments lui appartenant (tu l'as bien fait pour l'attribut ss:Name) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str_nodes = "//ss:Workbook/ss:Worksheet[@ss:Name='Statut juridique']/ss:Table/ss:Row";

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    Ca fonctionne!

    Merci beaucoup

    Lionel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM XML] Validation XSD en PHP 4 et DOM_XML
    Par philippejuju dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/12/2008, 16h23
  2. [DOM] Ecrire dans mon XML avec du PHP
    Par PurpleDoll dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 15/10/2007, 14h06
  3. [DOM] XML : un code php à mettre en javascript
    Par Tertiath dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2007, 14h46
  4. [XML] [DOM(XML?)] Suppression d'un noeud XML en php
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/01/2007, 15h11
  5. [EasyPHP] Easy Php 2.0 : Problème avec Dom Xml
    Par devadh dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/01/2007, 16h26

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