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

  FORUM HardWare.fr
  Programmation
  PHP

  [XML] Problème pour lire l'attribut xml:lang d'un élement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML] Problème pour lire l'attribut xml:lang d'un élement

n°1437806
vallica
Posté le 06-09-2006 à 16:26:56  profilanswer
 

Bonjour tout le monde,
 
J'utilise actuellement simpleXml pour parser des fichiers XML, mais je suis confronté à un problème :  
 
sur un élement donné du style <element attribut1="salut" xml:lang="fr"></element>
 
Je n'arrive pas à récuperer la valeur fr qui se trouve dans xml:lang... et lorsque je liste les attributs de l'element en faisant un attributes(), il n'y a que "attribut1" qui s'affiche....
 
merci d'avance !

mood
Publicité
Posté le 06-09-2006 à 16:26:56  profilanswer
 

n°1437818
FlorentG
Unité de Masse
Posté le 06-09-2006 à 16:38:46  profilanswer
 

Sûrement parce que l'attribut est namespacé, non ? La méthode attributes() prend le namespace comme argument, essaye avec celui de l'XML (http://www.w3.org/XML/1998/namespace)

n°1437824
naceroth
Posté le 06-09-2006 à 16:47:40  profilanswer
 

J'avais pensé la même chose que FlorentG, mais après avoir fait le test sur un bête doc xml, je récupère bien la valeur malgré le changement de namespace. Montre nous ton code plutôt :)

n°1438171
vallica
Posté le 07-09-2006 à 11:29:08  profilanswer
 

Bonjour à tous les 2,
 
Désolé de ne pas avoir répondu plus tôt, mais la notif par mail n'a pas fonctionné on dirais.
 
Alors voici tout d'abord un exemple de xml (le début du fichier)
 

Citation :

<?xml version="1.0" encoding="utf-8" ?>  
- <!-- This file was generated using the XSL file TIFv22toV310.xsl - Copyright © 2004 - TourinFrance
  -->  
- <tif:OI xmlns:tif="http://www.tourinfrance.net/Tourinfrance3/" xmlns:tif22="http://www.tourinfrance.net/tourinfrance22/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.tourinfrance.net/Tourinfrance3/ file:/C:/E_REFS/Tourinfrance/V3.10/Schemas/OI.xsd">
- <!-- Granule DublinCore
  -->  
- <tif:DublinCore>
  <dc:identifier>PCUAUV0630000001</dc:identifier>  
  <dc:date>03/09/1999</dc:date>  
  <dcterms:created>03/09/1999</dcterms:created>  
  <dcterms:modified>13/01/2000</dcterms:modified>  
  <tif:Classification code="02.01.11" xml:lang="fr">Patrimoine culturel</tif:Classification>  


 
On va donc dire que je veux savoir quelle est la valeur du xml:lang de la balise "Classification", j'ai donc ce code :
 

Citation :

// Chargement du fichier XML à l'aide de simpleXML
  if (!($xml = simplexml_load_file($ficheOI)))
   exit("Impossible d'ouvrir le fichier $ficheOI" );  
 $listeXml=$xml->xpath('/tif:OI/tif:DublinCore/tif:Classification');    
     
  foreach ($listeXml as $val){  
   $tmp=$val->attributes();
   
   print_r($tmp);
   
  }


 
et voici ma sortie :
 

Citation :

SimpleXMLElement Object ( [@attributes] => Array ( [code] => 02.01.11 ) )


 
donc j'ai bien l'attribut "code" qui apparait mais pas le "xml:lang" et je ne sais pas comment l'atteindre...
 
merci bcp.


Message édité par vallica le 07-09-2006 à 11:29:24
n°1438188
FlorentG
Unité de Masse
Posté le 07-09-2006 à 11:42:53  profilanswer
 

Comme dit, en mettant le namespace de l'xml comme premier paramètre de attributes()

n°1438198
vallica
Posté le 07-09-2006 à 11:52:06  profilanswer
 

je ne connais pas du tout le concept des namespace, mais effectivement ca fonctionne avec un
 

Citation :

$val->attributes("http://www.w3.org/XML/1998/namespace" );


 
j'ai bien
 

Citation :

SimpleXMLElement Object ( [@attributes] => Array ( [lang] => fr ) )


 
merci beaucoup, ca fait 2 semaines que je cherchais une solution !


Message édité par vallica le 07-09-2006 à 11:52:23
n°1438213
vallica
Posté le 07-09-2006 à 12:02:14  profilanswer
 

C'est encore moi, j'ai oublié de vous demander si il existait un moyen d'accéder à cet attribut sans passer par la méthode attributes() c'est à dire en y accedant par les crochets [] sur le SimpleXMLElement directement, comme on le fait pour les attributs non-namespacés.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [XML] Problème pour lire l'attribut xml:lang d'un élement

 

Sujets relatifs
Lire des police d´ecriture en CProblème création champ | Wampserveur
Petits probleme d'un debut de projet SDLLire un fichier distant avec SSH
[Business Objec (webi)], probleme de requete LIKE '%blabla%'.Listage des utilisateurs ayant droit de lire un fichier/répertoire
Problème avec des ocxProblème avec ma combobox
[Resolu][C#.NET] XML -> Un lire des noeuds un après l'autre ? 
Plus de sujets relatifs à : [XML] Problème pour lire l'attribut xml:lang d'un élement


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