Le nombre de ligne en XML [Résolu]

cs_JCpp 334 Messages postés samedi 12 janvier 2002Date d'inscription 3 juillet 2010 Dernière intervention - 4 août 2007 à 12:55 - Dernière réponse : Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention
- 4 août 2007 à 14:03
Bonjour,
ça fonctionne, mais, je ne trouve pas le moyen de coder plus simplement pour connaître le nombre de ligne. (9 dans l’exemple)
Merci beaucoup.
@+

<?xmlversion="1.0"encoding="ISO-8859-1"?>
<contacts>
<testIn="toto"/>
<testIn="tata"/>
<testIn="titi"/>
<testIn="mama"/>
<testIn="popo"/>
<testIn="bobo"/>
<testIn="dodo"/>
<testIn="roro"/>
<testIn="pipi"/>
</contacts>
<?php

 $Nbr=0;
$dom = DomDocument::load("test.xml");
$node = $dom->getElementsByTagName('contacts')->item(0);
foreach($node->childNodesas$n){
if($n->nodeType == XML_ELEMENT_NODE){
$Nbr++;
}
}
printf('%s
',$Nbr);
?>
Afficher la suite 

10 réponses

Répondre au sujet
cs_JCpp 334 Messages postés samedi 12 janvier 2002Date d'inscription 3 juillet 2010 Dernière intervention - 4 août 2007 à 13:42
+3
Utile
Tout simplement



$document = DomDocument::load("test.xml");
$xpath = new DOMXPath($document);
$nbTest = $xpath->evaluate('count(/contacts/test)');
echo "Il y a $nbTest test(s)";
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_JCpp
J_G 1406 Messages postés mercredi 17 août 2005Date d'inscription 28 août 2007 Dernière intervention - 4 août 2007 à 13:43
+3
Utile
Salut,

Tu as en gros deux solutions pour trouver le nombre d'élements "test In" :

1. Celle que tu as presque trouvée :
$dom = DomDocument::load("test.xml");
$nbr = $dom->getElementsByTagName('testIn')->length;

2. Avec Xpath :
$dom = DomDocument::load("test.xml");
$xpath = new DomXpath($dom);
$nbr = $xpath->evaluate('count(/contacts/testIn)');

A+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de J_G
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 août 2007 à 13:07
0
Utile
Hello,

$fichier = file('

test.xml'
);
echo count($fichier); 
Commenter la réponse de Evangun
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 août 2007 à 13:10
0
Utile
Quoique, si tu ne veux compter qu'un seul type de balises et pas toutes les lignes, tu fais un explode('testIn', $tonxml) et tu fais count - 1.
à+
Commenter la réponse de Evangun
cs_JCpp 334 Messages postés samedi 12 janvier 2002Date d'inscription 3 juillet 2010 Dernière intervention - 4 août 2007 à 13:17
0
Utile
salut,
Je veux compter juste les «test In » mais, il peut y avoir d'autres balises aussi avec un nombre variable.
Je ne comprends pas ton explode.
Merci
Commenter la réponse de cs_JCpp
kishkaya 366 Messages postés samedi 26 juin 2004Date d'inscription 17 avril 2008 Dernière intervention - 4 août 2007 à 13:17
0
Utile
Bonjour,
Si t'envisage de faire des modifs dans ton XML tu vas devoir passer par DOM (ou sax) ou alors le XSL (il y a une librairie php qui prend le xsl), dans ce cas la, au lieu de faire fopen ne serait il pas mieux d'utiliser directement l'instance de DomDocument crée ?
Je demande juste pour savoir en terme de vitesse de traitement sur des gros XML ce qui serait le plus adapté ?

_Marikou
Commenter la réponse de kishkaya
cs_JCpp 334 Messages postés samedi 12 janvier 2002Date d'inscription 3 juillet 2010 Dernière intervention - 4 août 2007 à 13:28
0
Utile
Coucou,
Oui, le fichier xml sera modifié et j'utilise de dom.
Mon problème c'est que je voudrais savoir combien j'ai de baise «test In».
Je suis novice en php, il faut certainement utiliser length, count, ou autre chose mais je n'y arrive pas.
Ça bug.




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Commenter la réponse de cs_JCpp
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 août 2007 à 13:42
0
Utile
Si $string contient ton xlm, tu fais $tab = explode('testIn', $string); $number = count($tab)-1; echo $number;
Commenter la réponse de Evangun
J_G 1406 Messages postés mercredi 17 août 2005Date d'inscription 28 août 2007 Dernière intervention - 4 août 2007 à 13:48
0
Utile
Evangun:"Si $string contient ton xlm, tu fais $tab explode('testIn', $string); $number count($tab)-1; echo $number;"

... ce n'est pas correct !!!

Avec ce XML, tout à fait valide :
<contacts><testIn></testIn></contacts>
http://www.catb.org/%7Eesr/faqs/smart-questions.html
Commenter la réponse de J_G
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 août 2007 à 14:03
0
Utile
Lol, oui ok je vais un peu vite et en plus ce n'est pas très propre, désolé Faut que je me mette aux fonctions toutes faites pour le XML moi.
bref avec <testIn explode marcherait mieux c'est sûr...
Commenter la réponse de Evangun

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.