Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
j'essaie de lire un fichier xml que j'ai récupérer d'un table de ma BD via MySQL.
Peut-on lire ce fichier avec Zend_Config_Xml en faisant par exemple un foreach pour chaque ligne retournée ?
Voici mon fichier xml :
<tacteurs> <act_id>1</act_id> <act_nom>Toto</act_nom> </tacteurs> <tacteurs> <act_id>2</act_id> <act_nom>Tata</act_nom> </tacteurs>
Ou alors cette classe est faite pour lire seulement un fichier de config ?
Si tel était le cas, existe-il une classe qui me permette de lire du xml ?
Merci d'avance.
Dernière modification par Godzinho (13-04-2010 10:49:33)
Hors ligne
Mon soucis ne vient pas de la balise root, j'en ai une.
C'était juste un exemple pour pouvoir lire deux balises de même niveau avec le même nom.
Mais Zend_Config_Xml ne permet pas de lire un fichier xml que l'on récupère depuis une BD. Il porte bien son nom (ma question était bête), il sert à lire un fichier de configuration au format xml qui ne comporte pas deux même balise de même niveau.
Ma question est alors, peut-on lire un fichier xml avec Zend ?
Hors ligne
Salut,
peut-être Zend_Dom ?
Hors ligne
Merci NewSky, je devrais trouver mon bonheur avec cette classe.
Je regarde sa et je reviens si j'ai un soucis.
Hors ligne
Je n'arrive pas à lire mon document xml avec Zend_Dom.
Voici comment je procède :
$nra = new Zend_Dom_Query("./data/tActeur.xml"); $this->view->nraXml = $nra->queryXpath("tacteurs");
Mon xml :
<bd1> <!-- Table tacteurs --> <tacteurs> <act_LngID>78</act_LngID> <act_StrNom>SAULE</act_StrNom> <act_StrPrenom>Pleureur</act_StrPrenom> </tacteurs> <tacteurs> <act_LngID>80</act_LngID> <act_StrNom>VACHAL</act_StrNom> <act_StrPrenom>Germaine</act_StrPrenom> </tacteurs> <tacteurs> <act_LngID>82</act_LngID> <act_StrNom>VERDIER</act_StrNom> <act_StrPrenom>Josette</act_StrPrenom> </tacteurs> </bd1>
Maintenant je fais un Zend_Debug dans ma vue et j'ai ceci :
object(Zend_Dom_Query_Result)#50 (7) { ["_count:protected"] => NULL ["_cssQuery:protected"] => NULL ["_document:protected"] => object(DOMDocument)#51 (0) { } ["_nodeList:protected"] => object(DOMNodeList)#53 (0) { } ["_position:protected"] => int(0) ["_xpath:protected"] => NULL ["_xpathQuery:protected"] => string(8) "tacteurs" }
Je ne récupère aucune ligne.
Est-ce que je m'y prend mal ou alors sa veut pas fonctionner ?
Hors ligne
Non, il me semble que c'est le fonctionnement normal. Mais j'en suis pas sûr !
Zend_Dom_Query_Result implemente l'interface Iterator et Countable.
Essais de faire un
echo count( $nra->queryXpath("tacteurs") );
pour voir si le retour te semble cohérent
Hors ligne
J'ai essayé le echo, mais sa ne pouvait que me retourner 0 puisque dans mon Zend_Dom_Query_Result j'ai la variable count à null.
Je pensais à un problème de chemin mais en utilisant la classe php simplexml_load_file j'arrive à lire mon fichier.
Sinon j'ai testé aussi :
$nra = new Zend_Dom_Query(); $nra->setDocumentXml("./data/tActeur.xml"); $this->view->nraXml = $nra->queryXpath("tacteurs");
car sinon le type de document par défaut est docHtml.
Mais j'obtiens cette erreur sans layout (page blanche) :
Error parsing document (type == docXml)
Voilà, je cherche mais je n'avance pas réellement.
Dernière modification par Godzinho (09-04-2010 15:39:58)
Hors ligne
Tout simplement pour utiliser au maximum les composants du framework et rester dans une optique objet.
Après, si sa n'a pas vraiment d'avantage, je veux bien que tu m'expliques car je ne saurais te donner de réponse à ce niveau là !!!
Mais je peux tout aussi bien utiliser simplexml...
Hors ligne
Bon, je suis finalement passé au csv car le temps de traitement de mon fichier était trop long.
Hors ligne
Pages: 1