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 :

[SimpleXML] Modifier le contenu d'un noeud


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut [SimpleXML] Modifier le contenu d'un noeud
    salut,

    j'arrive pas a y accéder a un noeud de mon fichier document.xml car il a une syntaxe un peut différente des autres fichiers xml et elle est imposée....

    veuillez voir le fichier index.php où j'essaye d'y accéder à cce noeud et d'y modifier son contenu...

    Cordialement,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Vu que c'est du OpenXML comme format, je te conseille de chercher un tuto en ce sens, il en existe de très bon.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    en fait, j'avais déjà essayé avec xmlDOM mais et ça parse le document.xml mais le problème c'est que l'affichage se fait sur une page html,alors que moi je veux que el résultat soit écrit dans un endroit bien précis dans le document.xml

    http://www.w3schools.com/dom/tryit.a..._att_nodevalue

    voila le site ou je peux te convaincre, et le problème c'est la fonction document.write(...) qui s'impose avec le xmlDOM..

    merci d'avance,

  4. #4
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Il y a des moyen avec xmlDOM de changer la valeur d'un noeud.
    Enfin je suppose, car j'utilise simpleXML comme parseur en PHP, mais on peut changer la valeur d'un noeud très simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $xml = simplexml_load_file('file.xml');
    $xml->Person[0]->Name = "Toto";
    En supposant que le fichier XLM soit de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version='1.0' standalone='yes'?>
    <Persons>
        <Person>
            <Name>Charly</Name>
        </Person>
    </Persons>
    Je te renvoie vers cette page pour plus d'info.

    Ou plus simplemment celle-là, qui est dédié à OpenXML.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    oui, je vois très bien, en fait, après que j'ai vu que xmlDOM ne marchait pas avec ce que je voulais car ça affichait le résultat sur une page html....si tu regardes bien mon fichier index.php, j'utilise le simpleXML, mais le truc c'est que dans le tag name, par exemple c'est <w:r>, il y a les deux points(, et cela me pose tout le problème quand je veux accéder à un truc, par exemple:

    $xml->w:body->w:p w:rsidR="008F30FA" w:rsidRDefault="008F30FA"->w:r->w:t->ValeurPrenom = "tata";

    tu vois , il pense que les deux points qui sont dans le tag name sont des séparateurs mais ce n'est pas le cas.....

    j'ai essayé de les banaliser par '' ou "" ou \ , mais rien n'a marcher....

  6. #6
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Et tu as regardé la page sur l'OpenXML ?

    Car même si je ne l'ai jamais fait, je sais qu'il est possible d'intéragir avec via PHP. Malgré les deux points ( : )
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    j'ai trouvé coment je pourrai accéder....en fait comme ça commence toujours avec w: donc c'est juste pour le namespace donc je supprime et ç amarche à ce stade là..

    cependant, file_put_contents($file, $xml->asXML()); ne marche plus

    c'est ce qui me donné comme erreur:

    Fatal error: Call to undefined method stdClass::asXML() in C:\wamp\www\testing\index.php on line 20

    je crois c'est à cause de :

    $xml = simplexml_load_string(file_get_contents($file));

    je mets en pièce jointe la nouvelle page index.php
    Fichiers attachés Fichiers attachés

  8. #8
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Pourquoi n'utilise tu pas simplexml_load_file($file) plutôt ?
    C'est la méthode de simpleXML pour charger un fichier XML.

    Mais je t'avoue que je ne pense pas que simpleXLM soit fait pour parser et modifier du OpenXML, je te renvoie donc une fois de plus ici, où tu devrais trouver ton bonheur.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    en fait, j'ai essayé d'utiliser avec "loadfile", mais cela ne marchait pas....

    là, mon problème c'est que quand je spécifie le chemin comme par exemple:

    $xml->body->p->r->t->ValeurPrenom = "tata";

    ça marche pas....et si je mets:

    $xml->body->p[1]->r->t->ValeurPrenom = "tata"; non plus, à cause des trucs que j'ai pas mis et je peux pas les mettre comme par exemple:

    $xml->body->p w:rsidR="008F30FA" w:rsidRDefault="008F30FA"->r->t->ValeurPrenom = "tata";

    meme cela sans les w: ne marche pas:

    $xml->body->p rsidR="008F30FA" rsidRDefault="008F30FA"->r->t->ValeurPrenom = "tata";

    je te joints le document.xml pour que tu vois si je fais
    $xml->body->p->r->t->ValeurPrenom = "tata"; regarde où il me rajoute les informations.....
    Fichiers attachés Fichiers attachés

  10. #10
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Je voudrais juste savoir si tu es allé faire un tour sur cette page qui ne parle que de l'OpenXML avec PHP, car à mon avis, simpleXML n'est pas du tout fait pour ça, donc tu n'y arriveras pas comme ça.
    Et je n'ai malheureusement pas le temps en ce moment de me pencher là dessus pour te proposer une réponse toute cuite ou des exemples...

    Donc je remet la page : http://php.developpez.com/faq/?page=openxml
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    salut,

    merci pour le lien, ça m'a bcp servi!

    j'ai changé tout...j'ai utilisé xmlDOM et ça marche nikel!

    mais en fait, pour lire et modifier de l'info dans un document ooxml avec php (car j'utilise php), j'en ai pas trouvé des tutorials dessus...j'ai vu avec C# ou avec .NET ...

  12. #12
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Pourtant dans la FAQ de PHP concernant OpenXML, y'a des passages sur lire et écrire du OpenXML, donc à partir de ça tu dois bien pouvoir trouver comment modifier un document.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    en fait, tu m'a pas bien compris....dans la FAQ PHP, ils mettent quels sont les outils pour lire un document ooxml tel que par exemple tu dois avoir PHP version 5.2 et des trucs comme cela.

    Peut être j'étais pas trop claire....moi j'y arrive à générer un docx pré-rempli...mais si par exemple je veux accéder à (lire ou ajouter) la valeur du prénom ( je considère que j'ai un champ prénom), c'est avec quel outil? xmlDOM le fait?

    merci..

  14. #14
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Apparement oui, vu que ce que tu fait pour générer un docx, tu peux aussi l'utiliser pour modifier une valeur.

    Donc pour lire un document OpenXML, tu as des exemples ici.

    Pour la modification, je suppose que c'est possible par les mêmes méthodes que celle qui sont utilisées pour créer le document docx, mais je n'ai pas trouvé d'exemple.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    oui, je vois...mais ce framework et l'exemple situé en-dessous de la page n'apporte que les métadonnées.....mais moi je veux vraiment accéder au contenu, c'est à dire à ce qui est écrit dans un des runs (situé dans un paragraphe bien sûr) dans le document.xml.....

  16. #16
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Je suis désolé, mais je ne peux rien t'indiquer de plus pour le moment, je n'ai rien trouvé d'autre...

    Pourquoi cherche tu à modifier un docx via PHP ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 30
    Points
    30
    Par défaut
    en fait, je suis obligé à utiliser le PHP, et déjà j'ai commencé avec pour générer un docx, mais juste un question...quand je veux accéder à un attribut dans un OOXML, je pourrai pas le faire avec XPath?

    et quand je veux modifier une valeur d'un attribut avec OOXML, est-ce que seulement je dois modifer le document.xml ou aussi d'autres documents sachant que je ne modifie que la valeur de l'attribut....

    merci,

  18. #18
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Je t'avoue que je ne sais pas du tout, n'ayant jamais pratiqué l'OpenXML avec PHP.
    Mais c'est une bonne idée à essayer !

    Pour ta deuxième question, logiquement je te dirais non, vu que ce n'est que la valeur de l'attribut que tu modifie et pas son nom.
    Mais dans les faits, vu que je n'ai jamais pratiqué, je ne saurais te le dire.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

Discussions similaires

  1. Modifier le contenu d'un noeud XML avec XQuery
    Par Gm7468 dans le forum Débuter
    Réponses: 2
    Dernier message: 12/07/2012, 08h44
  2. [DOM] Modifier le contenu d'un noeud complet
    Par getrude dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/07/2012, 11h48
  3. Comment modifier le contenu d'un noeud de type texte avec python?
    Par Tinkite82 dans le forum Général Python
    Réponses: 14
    Dernier message: 01/06/2010, 11h58
  4. [XML] Modifier le contenu d'un noeud
    Par joulive dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/10/2009, 14h12
  5. [SimpleXML] Modifier le contenu d'un noeud
    Par Scalp4 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 02/10/2008, 14h59

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