Aller au contenu

Tchyo

Membre
  • Compteur de contenus

    3
  • Inscrit(e) le

  • Dernière visite

Réputation sur la communauté

0 Neutre

Pour me contacter

  • Mon Site
    http://www.naeberg.org/
  1. Tchyo

    MCrypt et DOM

    Deux problèmes, donc. Tout d'abord, je tente depuis quelques temps de communiquer à travers un socket avec un démon Perl distant, en cryptant les communications en Bowlfish. Le système de socket marche, le décryptage égalemement, mais le cryptage persiste à donner des résultats différents de ceux du démon. Voici les fonctions utilisées. function encoder($texte) { $texte = stripslashes($texte); $cle = 'KpdFvmwCX4axXNXZ'; $iv = '$KJh#(}q'; $td = mcrypt_module_open(MCRYPT_BLOWFISH, "", MCRYPT_MODE_CBC, ""); mcrypt_generic_init($td, $cle, $iv); $dechifr = mcrypt_generic($td, $texte); mcrypt_generic_deinit($td); mcrypt_module_close($td); return($dechifr); } function decoder($texte) { $cle = 'KpdFvmwCX4axXNXZ'; $iv = '$KJh#(}q'; $td = mcrypt_module_open(MCRYPT_BLOWFISH, "", MCRYPT_MODE_CBC, ""); mcrypt_generic_init($td, $cle, $iv); $temp = trim(mdecrypt_generic($td, trim($temp, "\x00..\x1F")), "\x00..\x1F"); mcrypt_generic_deinit($td); mcrypt_module_close($td); return($temp); } Le deuxième problème touche à la géneration d'espaces de nommage avec DOM. J'ai probablement mal compris, là aussi A la base, je crée les attributs en DOM de cette façon : $root = $tree->createElement('feed'); $root->setAttribute('version', '0.3'); Je pensais donc utiliser un comportement similaire pour les xmlns : //Essai 1 //$xmlns = $tree->createAttributeNS('http://purl.org/atom/ns#', 'xmlns:atom'); //$root->setAttributeNodeNS($xmlns); //Essai 2 //$root->setAttributeNS('http://purl.org/atom/ns#', 'atom', 'xmlns'); //$root->setAttributeNS('fr', 'lang', 'xml'); Seulement, aucune des deux methodes ne marche. J'ai trituré les arguments dans tous les sens au cas où, aucun changement. L'exception DOM est NAMESPACE_ERR
  2. En fait, il me renvoit une erreur fatale lors de l'utilisation de la methode insertBefore() $tree->insertBefore($newentry, $firstentry) Le problème est qu'il me renvoit une DOMException avec un essage Not Found Error (très explicite). Est-ce que ça voudrait plutôt dire qu'il n'a pas réussi à retrouver la Node que j'ai inséré en argument Refnode ? Possible, j'ai pu rater un detail dans la notion d'espace de nommage. Il s'agit du code XML d'un feed Atom, à tout hasard (les specs sont disponibles ici : http://atomenabled.org/developers/syndicat...format-spec.php ) <?xml version="1.0" encoding="utf-8" ?> <feed version="0.3" xmlns="http://purl.org/atom/ns#" xml:lang="fr"> <title>Feed Atom</title> <link rel="alternate" type="text/html" href="http://fqdn/"/> <link rel="alternate" type="application/xhtml+xml" href="http://fqdn/"/> <modified>2005-02-12T23:43:50+01:00</modified> <author> <name>Auteur</name> </author> <contributor> <name>Contributeur</name> </contributor> <tagline type="text/plain" mode="escaped">Exemple de feed Atom</tagline> <id>http://fqdn/feed/atom/</id> <entry> <title>Exemple d'entrée de feed Atom</title> <link rel="alternate" type="text/html" href="http://fqdn/news.php?id=1"/> <id>http://fqdn/feed/atom/1</id> <issued>2005-02-12T23:43:50+01:00</issued> <modified>2005-02-12T23:43:50+01:00</modified> <summary>Voici un court exemple d'article obtenu à travers un feed Atom</summary> <content type="text/html" mode="escaped">Texte</content> </entry> </feed> Est-ce qu'il faudrait plutôt taper des noms d'éléments du style atom:entry ? EDIT : Problème XPath résolu, c'était bien l'espace de nommage (très mal déclaré, on va dire " ) EDIT : Décidément... Dernier problème résolu. J'ai considéré à tort que la partie Node de l'élément Document se referait à la Node feed, ce qui n'était semble-il pas le cas. Merci beaucoup pour m'avoir aguillé sur la bonne voie
  3. Tchyo

    [Résolu]XPath et DOM sur PHP

    Bonjour. J'ai actuelement deux problèmes avec les implémentations PHP de DOM et XPath. Tout d'abord, l'objet NodeList de DOM. Les spécifications du W3C ( http://www.w3.org/TR/2000/REC-DOM-Level-2-...ml#ID-536297177 ) indiquent bien que la methode item() doit retourner un autre objet, de type Node. Ce code devrait donc logiquement retourner DOMNode $tree = new DomDocument(); $tree->load('./res/file.xml'); $list = $tree->getElementsByTagName('entry'); echo get_class($list->item(0)); Or, c'est DOMElement que je recoit à la place. Le deuxième problème est avec les expressions XPath. Toute requête mentionnant le nom d'un élément ne retroune aucun résultat. Exemple : $tree = new DomDocument(); $tree->load('./res/file.xml'); $xpath = new DomXPath($tree); $list = $xpath->query('//entry'); echo $list->length; Ce code renvoit 0 à l'écran alors que l'élément <entry> existe bel et bien (voir premier exemple ci-dessus). Une requête du style //* marche parfaitement bien et renvoit tous les noeuds du document, par contre. Voilà, j'espère que quelqu'un arrivera à me sortir du brouillard, parce que j'ai beau chercher, je ne trouve pas vraiment de solution au problème. Je précise que je travaille avec PHP 5.0.3 et l'extension DOM (pas DOM XML de PHP4, donc).
×
×
  • Créer...