Pages: 1 [2]  Toutes   Bas de page
  Imprimer  
Auteur Fil de discussion: [EN COURS] Code Snippet (exemples)  (Lu 19147 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Développé Couché
Fait partie du Décor
*
Alcoolémie: 20
Messages: 3461
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
« Répondre #20 le: 15 Octobre 2009 00:18:37 »

 arrows_right Parser un XML

Afin de parser un XML dans XBMC vous aurez le choix entre plusieurs module tels que:

  • ElementTree: Tres rapide a parser mais aussi tres sensible aux erreurs dans un XML
  • BeautifulSoup: Moins rapide qu'ET mais supporte des XML 'moins standards'
  • minidom: un grand classique, plus d'info sur le site officiel ICI, voici un snippet LA
  • lxml: a ses fans aussi, plus d'infos ICI
  • Et certainement d'autres ...

Je n'ai pour ma part eu l'occasion que de comparer ElementTree et BeautifulSoup
Voici donc deux exemple de code parsant le meme XML, l'un avec ElementTree, l'autre avec Beautifulsoup

 arrows_right Exemple avec BeautifulSoup
Code
(Python):
from BeautifulSoup import BeautifulStoneSoup
 
soup =  BeautifulStoneSoup((open(os.path.join(CACHEDIR, XMLFile), 'r')).read())
cat_scrapers = soup.find("scrapers")
 
if cat_scrapers != None:
for item in cat_scrapers.findAll("entry"):
if hasattr(item.title,'string'):
if item.title.string != None:
title = item.title.string.encode("cp1252")
if hasattr(item.version,'string'):
if item.version.string != None:
version = item.version.string.encode("utf-8")
if hasattr(item.lang,'string'):
if item.lang.string != None:
language = item.lang.string.encode("utf-8")
if hasattr(item.date,'string'):
if item.date.string != None:
date = item.date.string.encode("cp1252")
if hasattr(item.previewvideourl,'string'):
if item.previewvideourl.string != None:
previewVideoURL = item.previewvideourl.string.encode("utf-8")

 arrows_right Exemple avec ElementTree
Code
(Python):
import elementtree.ElementTree as ET
 
elems     = ET.parse( open( os.path.join( CACHEDIR, XMLFile ), "r" ) ).getroot()
cat_scrapers = elems.find( "scrapers" ).findall( "entry" )
 
for item in cat_scrapers:
title             = item.findtext( "title" )
version           = item.findtext( "version" )
language          = item.findtext( "lang" )
date              = item.findtext( "date" )
added             = item.findtext( "added" )
previewVideoURL   = item.findtext( "previewVideoURL" )

Dans les deux bien sur cas vous devrez couvrir en plus les exceptions en utilisant des blocs try/except
Journalisée

Pages: 1 [2]  Toutes   Haut de page
  Imprimer  
 
Aller à: