J'essaie d'apprendre comment faire des requêtes XPath à partir de Python en utilisant cet exemple de fichier XML: http://pastie.org/1333021 Je viens de lui ajouter un espace de nommage parce que mon application l'utilise.Python libxml2 XPath/Namespace Help
Fondamentalement, je veux exécuter une requête de niveau supérieur qui retourne un sous-ensemble de nœuds, puis interroger le sous-ensemble (sur une échelle beaucoup plus grande que cet exemple)
Donc, voici mon code pour d'abord trouver tous <food>
nœuds puis itérer sur la description de chacun.
#!/usr/bin/python2
import libxml2
doc = libxml2.parseFile("simple.xml")
context = doc.xpathNewContext()
context.xpathRegisterNs("db", "http://examplenamespace.com")
res = context.xpathEval("//db:food")
for node in res:
# Query xmlNode here
print "Got Food Node:"
desc = node.xpathEval('db:description') # this is wrong?
print desc
Il est donc essentiellement un problème d'espace de noms, si je retire l'attribut xlns
à partir du fichier XML et utiliser des requêtes XPATH juste base sans db:
il fonctionne très bien. La première requête //db:food
fonctionne très bien, mais la seconde échoue à l'évaluation.
S'il vous plaît quelqu'un peut corriger ma syntaxe de l'espace de noms/requête.
Merci beaucoup
Merci beaucoup, je pense que je ne comprenais pas le contexte change :) – Jason