Probleme mit XML XPATH Select

Kirby.exe

Top Contributor
Also ich arbeite gerade wieder an meinem Discord Bot und möchte gerne mehr als eine Sprache einführen 🙂 Ich hatte irgendwie in Erinnerung dass man das mit XML machen kann. Mein Problem ist, dass ich gerade versuche mit XPATH ein Element zu selecten, aber ich immer nur leere Listen zurückbekomme...

Das ist die recht simple XML Datei:

XML:
<?xml version="1.0" encoding="UTF-8"?>

<levels>
    <message name="level_stats_error" lang="en">You haven't been ranked yet. To be ranked send a message or add reactions.</message>
    <message name="level_stats_error" lang="de">Du wurdest noch nicht eingeranked. Damit du einen Rank erhälst, musst du eine Nachricht schicken oder eine Reaction hinzufügen</message>
</levels>

damit versuche ich gerade zu selectieren:

Python:
import xml.etree.ElementTree as ET
tree = ET.parse('languages.xml')
root = tree.getroot()
print(root.findall('.//levels'))
 
Ich kenne jetzt die library nicht, die Du verwendest, aber XPath ist ja relativ zum aktuellen Knoten. Das root Element ist bei Dir ja schon levels, d.h. mit "." bekommst Du das, was vom Dokument das /levels wäre.

Alle Elemente innerhalb sollten dann mit * zu bekommen sein (was aus Dokumentensicht /levels/* wäre).

Wenn Du gezielt message Tags haben willst, dann sollte ein einfaches "message" ausreichen (oder eben das /levels/message)

Ich kenne die Implementierung nicht, aber ich würde erwarten, dass sowohl die relativen als auch die absoluten Angaben funktionieren müssten.

Nähere Erläuterungen finden sich ansonsten auf https://de.wikipedia.org/wiki/XPath oder in einem der vielen Tutorials im Netz 🙂
 

Zurück
Oben