Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1364 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Extraire donné XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraire donné XML

n°1829423
junix
Posté le 19-12-2008 à 11:42:49  profilanswer
 

Bonjour, j'ai un serveur MapGuide OS, je réucpére un xml de ce genre :
 
<FeatureInfoCollection>
   <FeatureInfo layer="Samples/Sheboygan/Layers/Parcels">
      <Property name="Description1" value="SEC 22 T15N R23E"/>
      <Property name="Zone" value="RES"/>
      <Property name="Acreage" value="0.29"/>
      <Property name="Lot Dimensions" value="60X211"/>
      <Property name="Owner" value="LEMKE, JOSHUA & EMIL"/>
      <Property name="Description2" value="PRT NW 1/4 SW 1/4 COM IN E"/>
      <Property name="Description3" value="LN OF N EVANS ST 797.3' S OF"/>
      <Property name="Billing Address" value="639 N EVANS ST"/>
      <Property name="Lot Size (SqFt)" value="12660"/>
      <Property name="Description4" value="ITS INTERSECTION WITH S LN"/>
   </FeatureInfo>
</FeatureInfoCollection>
 
Je voudrais récupéré la valeur du name="Zone"
 
J'ai essayé deux syntaxe mais sans succé

Code :
  1. var doce = response.responseXML.documentElement;
  2. var PCode = doce.getElementsByTagName('Property')[1].value;


Code :
  1. var doce = response.responseXML.documentElement;
  2. var PCode = doce.getElementsByTagName('Zone').data;


Code :
  1. var doce = response.responseXML.documentElement;
  2. var PCode = doce.getElementsByName('Zone').value;


 
Quand je fais un alert de "doce", il m'affiche [Object Elment]
 
Merci d'avance


---------------

mood
Publicité
Posté le 19-12-2008 à 11:42:49  profilanswer
 

n°1829449
FlorentG
Unité de Masse
Posté le 19-12-2008 à 12:25:26  profilanswer
 

Heureusement que doce est un Objet [:petrus75]


Message édité par FlorentG le 19-12-2008 à 12:25:32
n°1829454
junix
Posté le 19-12-2008 à 12:30:06  profilanswer
 

comment savoir se qu'il y a dedans?


---------------

n°1829459
FlorentG
Unité de Masse
Posté le 19-12-2008 à 12:33:39  profilanswer
 

Via FireBug par exemple, met un espion dessus pour voir les différentes propriétés. Et la référence de l'API DOM

n°1829462
ionik
Posté le 19-12-2008 à 12:37:24  profilanswer
 

A savoir que quand tu parcourt un object xml en javascript si je me souviens viens tu dois parcourir les parents avant les enfants
 
essaye :

Code :
  1. var doce = response.responseXML.documentElement;
  2.    var PCode = doce.FeatureInfoCollection.etc ...


sinon utilise firebug pour parcourir les objects et donc voir ceux qu'il contient a chaque niveau


---------------
Recette cookeo Recette de cuisine
n°1829642
junix
Posté le 19-12-2008 à 17:41:20  profilanswer
 

bon voici une impression d'ecran de la variable "doce"
 
http://img517.imageshack.us/img517/5342/impij0.th.jpg
 
l'erreur est :
 

Code :
  1. doce.featureinfocollection is undefined
  2. [Break on this error] var xmlrecu = doce.featureinfocollection.value;


 
le code :

Code :
  1. var doce = response.responseXML.documentElement;
  2. //var PCode = doce.getElementsByTagName('Property')[1].value;
  3. var xmlrecu = doce.featureinfocollection.value;


 
je comprend pas pourquoi il ne trouve pas featureinfocollection


---------------

n°1829667
FlorentG
Unité de Masse
Posté le 19-12-2008 à 18:46:52  profilanswer
 

On n'accède pas au éléments comme ça (doce.featureinfocollection), ce n'est pas comme l'API DOM HTML qui définit ce genre de propriétés. Il faut utiliser getElementsByTagName et ce genre de trucs.
 
Et featureinfocollection n'est pas enfant de doce, c'est doce... documentElement est l'élément racine

n°1829692
Mr Mala
Posté le 19-12-2008 à 20:38:12  profilanswer
 

Exact ...
De plus, je pense que tu ne t'es pas bien documenté sur le XML et les méthodes d'accès aux noeuds et leurs propriétés ! :-/
 
Dans ton XML, tu as bien 10 noeuds "Property" ... mais aucun n'a de "value" !
La "value" d'un noeud comme tu tentes de l'accéder est, platement, ce qui se trouve entre les <> </> !
Hors, là, tu vois bien qu'il n'y a rien ! ( <  /> )
 
Donc déjà, ça,

Code :
  1. var PCode = doce.getElementsByTagName('Property')[1].value;


.. tu oublies vite fait ! ( et de toute façon, ça serait même le cas, ça serait nodeValue et pas juste value ! )
 
Par contre, ces 10 noeuds possèdent tous 2 propriétés; name et value.
 
Ensuite, faire ".getElementsByTagName('Property')[1]" pour visiblement accéder directement au noeud dont la propriété "name" = "Zone" est une TRES mauvaise idée !
En effet, si un jour tu rajoutes ou si le service fournissant ce XML rajoute le moindre noeud au dessus de ce dernier, tu es foutu, tu seras bon à rechercher et remplacer dans toutes tes sources le [1] par le nouveau numéro de noeud !
 
Bon .. en gros ( je vais rien faire pour toi, je vais juste te mettre sur la piste ) :

Code :
  1. var PCode = doce.getElementsByTagName('Property');


Ca, c'est ok, ça te retourne un tableau des noeuds "Property" ( en supposant que "doce" soit le bon noeud racine )
Ensuite, tu fais une boucle dans laquelle tu vas analyser chaque élément de ce tableau pour chercher celui qui t'intéresse.
L'accès à des attributs de noeud se fait par la méthode .getAttribute('nom_attribut')

Code :
  1. boucle {
  2. si PCode[index].getAttribute('name') égal "Zone" alors {
  3.   // tu as le noeud qu'il te faut et tu peux traiter la valeur
  4.   PCode[index].getAttribute('value')
  5. }
  6. }


 
Essaye déjà ça ...


Message édité par Mr Mala le 19-12-2008 à 20:39:23
n°1829951
junix
Posté le 20-12-2008 à 22:46:04  profilanswer
 

Mr Mala  et FlorentG et ionik, merci merci  :pt1cable:  
 
Je teste cela des lundi, franchement super explication  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Extraire donné XML

 

Sujets relatifs
XHTML -> XSL -> XML, même le plus simple ne fonctionne pas ![Résolu] XML+XSL vers XHTML
Flux XML valide mais avec des erreurs ....XML/XSD : import et include
XSD et XML pour fichiet TXTCharger un fichier XML en PHP
Comment extraire les tags XML itunes?Extraire des champs XML d'un ntext (sql)...
[ASP] Extraire des données XML avec l'object XMLDOM[XML] extraire les données
Plus de sujets relatifs à : Extraire donné XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR