Parse XML avec namespaces en PHP

Fermé
ojikuroi - 22 févr. 2011 à 09:39
 ojikuroi - 22 févr. 2011 à 13:03
Bonjour,

le titre est assez explicite mais je me doit d'expliquer le contexte.

des imprimantes HP me renvoient un fichier XML contenant multes informations.
je dois parser ce fichier xml pour en extraire le nombre total de pages imprimées.

je pensais pouvoir le faire simplement en utilisant l'api simplexml de php5, seulement il y a des problemes car le fichier xml contient des namespaces sur TOUS CES CHAMPS !

je voudrais avoir la solution pour extraire des données d'un fichier XML avec des namespaces pour résumer =)

exemple tiré du fichier XML en question ( réussir par exemple à extraire le productnumber ) :

<xdm:Device xmlns:xdm="http://www.hp.com/schemas/imaging/con/xdm/1.1/" xmlns:dd="http://www.hp.com/schemas/imaging/con/dictionaries/1.0/" xmlns:bsi="http://www.hp.com/schemas/imaging/con/bsi/2003/08/21" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:count="http://www.hp.com/schemas/imaging/con/counter/2006/01/13" xmlns:media="http://www.hp.com/schemas/imaging/con/media/2006/01/13" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pwg="http://www.hp.com/schemas/imaging/con/pwg/sm/1.0/">
- <xdm:Information>
- <xdm:Component id="iSystem" componentType="system">
  <dd:MakeAndModel>HP LaserJet P4014</dd:MakeAndModel> 
  <dd:Description>HP LaserJet P4014</dd:Description> 
  <dd:ProductNumber>CB512A</dd:ProductNumber> 
- <dd:Manufacturer>
  <dd:Name>HP</dd:Name> 
  </dd:Manufacturer>
  <dd:SerialNumber>blablabla</dd:SerialNumber> 
  <dd:ServiceID>654684</dd:ServiceID> 
- <dd:Version>
  <dd:Revision>04.045.2</dd:Revision> 
  <dd:Date>2008-05-28</dd:Date> 
  </dd:Version>
  <dd:MopierFunctionSetting>Enhanced</dd:MopierFunctionSetting> 
  <dd:AutomaticResourceSaving>Automatic Resource Saving Enabled</dd:AutomaticResourceSaving> 
  </xdm:Component>


merci =)

PS : d'autres imprimantes me renvoient des fichiers xml simples et j'arrive très bien à les parser avec la methode simpleXML
A voir également:

1 réponse

petit up ?
0