Parser ce fichier xml un peu particulier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Parser ce fichier xml un peu particulier

Re: Parser ce fichier xml un peu particulier

par Megadeth » 12 avr. 2012, 12:25

J'ai résolu mon problème d'une façon moyennement propre mais je voyais pas comment faire et ne crois pouvoir faire autrement.

A vous de me dire (je reste preneur même si ça marche)

Le xml en base pour le même type d'info se présentait différemment suivant les cas, en clair pas de xml identique. Pour faire un parsage au niveau noeud c'est pas top je trouve.

J'ai donc réuni les dénominateurs comment et abusé de la fonction str_replace.

PHPïquement,

Mega
;)

Re: Parser ce fichier xml un peu particulier

par Megadeth » 12 avr. 2012, 10:09

Bonjour,

Non pas d'erreurs.

J'ai réussi à parser en local comme ceci (si ca peut aider) :
$document_xml = new DomDocument();
$document_xml->loadXML($xml);
$grandpere = $document_xml->getElementsByTagName('section');
$pere = $document_xml->getElementsByTagName('paragraph');
$enfants = $document_xml->getElementsByTagName('literal');
$uno = $enfants->item(0);
$dos = $enfants->item(1);
$tres = $enfants->item(2);
$quatro = $enfants->item(3);
echo '<h1>'.$uno->nodeValue."</h1><h2>".$dos->nodeValue."</h2><h3>".$tres->nodeValue."</h3><h4>".$quatro->nodeValue."</h4>";
Par contre dans mon autre environnement, ça ne fonctionne pas, c'est zarbi...

Mega
;)

Re: Parser ce fichier xml un peu particulier

par binboum » 11 avr. 2012, 16:32

Ton XML il n'a pas d'erreurs quand tu le tapes dans ta barre d'url ?

Re: Parser ce fichier xml un peu particulier

par Megadeth » 11 avr. 2012, 15:45

Merci binboum.

J'ai implémenté mais je n'ai pas de valeur, mais pas d'erreur pour autant.

Concernant le xml il est en base et quand je fais ceci :

$xml = $rows["contenu"];
echo $xml;

C'est ainsi que j'ai pu obtenir le

Code : Tout sélectionner

<section xmlns:image="http://ez.no/namespaces/ezpublish3/image/" xmlns:xhtml="http://ez.no/namespaces/ezpublish3/xhtml/" xmlns:custom="http://ez.no/namespaces/ezpublish3/custom/"> <paragraph xmlns:tmp="http://ez.no/namespaces/ezpublish3/temporary/"> <literal>info 1</literal> <literal>info 2</literal> <literal>info 3</literal> <literal>info 4</literal> <literal>info 5...</literal> </paragraph> </section>
J'ai essayé de partir de ce tuto : http://www.siteduzero.com/tutoriel-3-34 ... zcode.html, en vain. Pourtant, ma progression semble logique...
		$xml = $rows["contenu"];
		//echo $xml;
		$document_xml = new DomDocument();
		$document_xml->loadXML($xml);
		$grandpere = $document_xml->getElementsByTagName('section');
		$pere = $grandpere->getElementsByTagName('paragraph');
		$fils = $pere->getElementsByTagName('literal');
Right ?

Mega
;)

Re: Parser ce fichier xml un peu particulier

par binboum » 11 avr. 2012, 15:17

Bonjour,

J'ai ça en stock :
function objectsIntoArray($arrObjData, $arrSkipIndices = array())
{
    $arrData = array();
  
    if (is_object($arrObjData)) {
        $arrObjData = get_object_vars($arrObjData);
    }
   
    if (is_array($arrObjData)) {
        foreach ($arrObjData as $index => $value) {
            if (is_object($value) || is_array($value)) {
                $value = objectsIntoArray($value, $arrSkipIndices); 
            }
            if (in_array($index, $arrSkipIndices)) {
                continue;
            }
            $arrData[$index] = $value;
        }
    }
    return $arrData;
}

$xmlUrl = "LINK";
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
$result = objectsIntoArray($xmlObj);

Parser ce fichier xml un peu particulier

par Megadeth » 11 avr. 2012, 12:25

Bonjour,

Pouvez-vous m'aider svp ?

Voici la donne, un champ dans la base de mon appli contient ceci :

<?xml version="1.0" encoding="utf-8"?>
<section xmlns:image="http://ez.no/namespaces/ezpublish3/image/" xmlns:xhtml="http://ez.no/namespaces/ezpublish3/xhtml/" xmlns:custom="http://ez.no/namespaces/ezpublish3/custom/">
<paragraph xmlns:tmp="http://ez.no/namespaces/ezpublish3/temporary/">
<literal>info 1</literal>
<literal>info 2</literal>
<literal>info 3</literal>
<literal>info 4</literal>
<literal>info 5...</literal>
</paragraph>
</section>

Je cherche le moyen de ressortir proprement les info 1, info 2, info 3...et ne sais pas vers quelle méthode en php5 me tourner.

Par avance merci.

Mega
;)