IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Comment travailler avec un xml dont les noms de noeud sont identiques


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Comment travailler avec un xml dont les noms de noeud sont identiques
    Bonjour à tous,

    J'ai une difficulté avec un traitement de données xml.
    Je récupère sur un serveur distant (une API) des données au format xml, j'utilise DOM pour le traitement de celui-ci. En fait le Webservice renvoie une chaîne de caractère avec tout à l'intérieur. J'utilise donc loadXML pour tout récupérer.

    Mon problème est que je n'ai pas la main sur ce xml et sur la façon dont il est créé.

    le format du xml ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <tree path="">
    	<item  id="test"  name="test"  isFolder="true"  isLibrary="true"  path="test" >
    		<item  id="iddoc1"  name="doc1"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blabla"  path="test\doc1.xml" >
    			<fileInfo fileIndexed="2012-09-14 16:03:19" numPages="2" resolution="72" width="155.903" height="240.941" fileSize="103.48 Kb">
    				<metaData>
    					<item name="Num. Pages" value="2" />
    					<item name="Width" value="55 mm" />
    					<item name="Height" value="85 mm" />
    				</metaData>
    				<boxes />
    			</fileInfo>
    		</item>
    		<item  id="iddoc2"  name="doc2"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blabla2"  path="test\doc2.xml" >
    			<fileInfo fileIndexed="2012-09-07 10:38:47" numPages="2" resolution="72" width="155.903" height="240.941" fileSize="103.45 Kb">
    				<metaData>
    					<item name="Num. Pages" value="2" />
    					<item name="Width" value="55 mm" />
    					<item name="Height" value="85 mm" />
    				</metaData>
    				<boxes />
    			</fileInfo>
    		</item>
    	</item>
     
    	<item  id="test2"  name="test2"  isFolder="true"  isLibrary="true"  path="test2" >
    		<item  id="test2\demodocuments"  name="demodocuments"  isFolder="true"  isLibrary="false"  path="test2\demodocuments" >
     
    			<item  id="test2\demodocuments\BC"  name="BC"  isFolder="true"  isLibrary="false"  path="test2\demodocuments\BC" >
    				<item  id="idBC"  name="BCV"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL=""  path="test2\demodocuments\BC\BCV.xml" >
    					<fileInfo fileIndexed="2012-09-18 16:27:59" numPages="1" resolution="72" width="155.903" height="240.941" fileSize="18.13 Kb">
    						<metaData><item name="Num. Pages" value="1" />
    							<item name="Width" value="55mm" />
    							<item name="Height" value="85mm" />	
    						</metaData>
    						<boxes />
    					</fileInfo>
    				</item>
    				<item  id="idBC_DataSource"  name="BC_DataSource"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaBC_DataSource"  path="test2\demodocuments\BC\BC_DataSource.xml" >
    					<fileInfo fileIndexed="2012-09-14 16:11:27" numPages="2" resolution="72" width="155.903" height="240.941" fileSize="103.45 Kb">
    						<metaData>
    							<item name="Num. Pages" value="2" />
    							<item name="Width" value="55 mm" />
    							<item name="Height" value="85 mm" />
    						</metaData>
    						<boxes />
    					</fileInfo>
    				</item>
    			</item>
     
    			<item  id="test2\demodocuments\CC"  name="CC"  isFolder="true"  isLibrary="false"  path="test2\demodocuments\CC" >
    				<item  id="test2\demodocuments\CC\Snippets"  name="Snippets"  isFolder="true"  isLibrary="false"  path="test2\demodocuments\CC\Snippets" >
    					<item  id="idKV-demo"  name="KV-demo"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaKV-demo"  path="test2\demodocuments\CC\Snippets\KV-demo.xml" >
    						<fileInfo fileIndexed="2012-10-01 16:51:36" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="59.97 Kb">
    							<metaData>
    								<item name="Num. Pages" value="1" />
    								<item name="Width" value="150 mm" />
    								<item name="Height" value="100 mm" />
    							</metaData>
    							<boxes />
    						</fileInfo>
    					</item>
    					<item  id="idKV"  name="KV"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaKV"  path="test2\demodocuments\CC\Snippets\KV.xml" >
    						<fileInfo fileIndexed="2012-10-01 16:51:36" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="103.89 Kb">
    							<metaData>
    								<item name="Num. Pages" value="1" />
    								<item name="Width" value="150 mm" />
    								<item name="Height" value="100 mm" />
    							</metaData>
    							<boxes />
    						</fileInfo>
    					</item>
    				</item>
    				<item  id="idCCd"  name="CCd"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaCCd"  path="test2\demodocuments\CC\CCd.xml" >
    					<fileInfo fileIndexed="2012-04-19 17:34:08" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="137.46 Kb">
    						<metaData>
    							<item name="Num. Pages" value="1" />
    							<item name="Width" value="150 mm" />
    							<item name="Height" value="100 mm" />
    						</metaData>
    						<boxes />
    					</fileInfo>
    				</item>
    			</item>
     
    			<item  id="idtoto"  name="toto"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablatoto"  path="test2\demodocuments\toto.xml" >
    				<fileInfo fileIndexed="2012-10-01 16:51:36" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="59.97 Kb">
    					<metaData>
    						<item name="Num. Pages" value="1" />
    						<item name="Width" value="150 mm" />
    						<item name="Height" value="100 mm" />
    					</metaData>
    					<boxes />
    				</fileInfo>
    			</item>
    		</item>
    	</item>
    </tree>
    et là comme vous pouvez le voir la grande majorité des noeuds on le même nom

    Je voudrais traiter ce xml, pour en faire une liste du type :

    -test
    - document doc1 (avec nom et photo)
    - document doc2 (avec nom et photo)
    -test 2
    -demodocuments
    -BC
    - document BCV (avec nom et photo)
    - document BC_DataSource (avec nom et photo)
    -CC
    -Snippets
    - document KV-demo (avec nom et photo)
    - document KV (avec nom et photo)
    - document CCd (avec nom et photo)
    - document toto (avec nom et photo)

    Mais je n'arrive pas à faire ça, je m’emmêle les pinceaux dans les boucle les if et autre. N'y a t-il pas un moyen efficace de mettre par exemple tout dans des tableau ?
    Là j'approche la surchauffe cérébrale lol

    Merci à ceux qui prendront le temps de me lire mais surtout à ceux qui essayeront (et y arriveront) de m'aider ^^

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je vois pas pourquoi tu t'embrouilles, il suffit d'une récursion.

    Au début tu vas chercher les <item> du premier niveau, tu vérifies l'attribut isFolder, et si c'est un document tu traites comme un document, sinon tu traites comme un dossier et tu rappelles la même chose sur tous les <item> qu'il contient.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci de ta réponse.

    Citation Envoyé par thelvin Voir le message
    Au début tu vas chercher les <item> du premier niveau
    Comment prendre seulement l' <item> de premier niveau et après naviguer dans celui-ci ?

    J'avais au début commencé à utiliser ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($pays->getAttribute("isFolder") == "true" && $pays->getAttribute("isLibrary") == "true")
    Donc là je suis dans la cas d'un des dossiers "mère" (test ou test2 ). Mais après comment repartir dans le contenu de test ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ça j'en sais rien, c'est du PHP, pas du XML.

    Mais je suis à peu près sûr que PHP, malgré ses nombreux défauts, est capable de récursion.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci, je vais donc aller voir du côté PHP du forum.

Discussions similaires

  1. [DOM] Comment travailler avec un xml dont les noms de noeud sont identique ?
    Par eucaly dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 06/02/2013, 17h04
  2. [Batch] compter les fichiers dont les 5 premières lettres sont identiques
    Par jomel0609 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 10/01/2013, 12h11
  3. Réponses: 4
    Dernier message: 02/05/2009, 17h56
  4. Créer une table dont les noms de colonnes sont des paramètres
    Par Mythrandil dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/09/2007, 15h08
  5. Réponses: 2
    Dernier message: 22/06/2006, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo