# Probleme mit XML XPATH Select



## Kirby.exe (29. Jun 2021)

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 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:


```
import xml.etree.ElementTree as ET
tree = ET.parse('languages.xml')
root = tree.getroot()
print(root.findall('.//levels'))
```


----------



## kneitzel (29. Jun 2021)

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


----------



## Kirby.exe (29. Jun 2021)

Danke habe es zu laufen bekommen  Ich habe jetzt eine Root Wurzel eingefügt, da zu level noch andere Tags dazu kommen


----------



## kneitzel (29. Jun 2021)

Kirby.exe hat gesagt.:


> Danke habe es zu laufen bekommen  Ich habe jetzt eine Root Wurzel eingefügt, da zu level noch andere Tags dazu kommen


Ja genau, ein XML Dokument darf nur einen root-Knoten haben.


----------

