Le nombre de ligne en XML [Résolu]

cs_JCpp
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Dernière intervention
3 juillet 2010
- 4 août 2007 à 12:55 - Dernière réponse : Evangun
Messages postés
1982
Date d'inscription
dimanche 20 février 2005
Dernière intervention
24 septembre 2012
- 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 

Votre réponse

10 réponses

Meilleure réponse
cs_JCpp
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Dernière intervention
3 juillet 2010
- 4 août 2007 à 13:42
3
Merci
Tout simplement



$document = DomDocument::load("test.xml");
$xpath = new DOMXPath($document);
$nbTest = $xpath->evaluate('count(/contacts/test)');
echo "Il y a $nbTest test(s)";

Merci cs_JCpp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_JCpp
Meilleure réponse
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Dernière intervention
28 août 2007
- 4 août 2007 à 13:43
3
Merci
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+

Merci J_G 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

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

$fichier = file('

test.xml'
);
echo count($fichier); 
Commenter la réponse de Evangun
Evangun
Messages postés
1982
Date d'inscription
dimanche 20 février 2005
Dernière intervention
24 septembre 2012
- 4 août 2007 à 13:10
0
Merci
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
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Dernière intervention
3 juillet 2010
- 4 août 2007 à 13:17
0
Merci
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
Messages postés
366
Date d'inscription
samedi 26 juin 2004
Dernière intervention
17 avril 2008
- 4 août 2007 à 13:17
0
Merci
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
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Dernière intervention
3 juillet 2010
- 4 août 2007 à 13:28
0
Merci
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
Messages postés
1982
Date d'inscription
dimanche 20 février 2005
Dernière intervention
24 septembre 2012
- 4 août 2007 à 13:42
0
Merci
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
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Dernière intervention
28 août 2007
- 4 août 2007 à 13:48
0
Merci
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
Messages postés
1982
Date d'inscription
dimanche 20 février 2005
Dernière intervention
24 septembre 2012
- 4 août 2007 à 14:03
0
Merci
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.