Unable to parse value from xml for libgdx code

I am trying to parse data from an xml file into my libgdx game. My xml file is as follows:

<?xml version="1.0" encoding="utf-8"?>
<levels currentLevel = "1">
    <Level1 speed="1" direction="1" lineAngle="14" />
    <Level2 speed="1" direction="1" lineAngle="14" />
    <Level3 speed="1" direction="1" lineAngle="14" />
</levels>

And the code that I call in the show method to take values ​​from xml:

XmlReader xml = new XmlReader();
    try {
        XmlReader.Element element = xml.parse(Gdx.files.internal("levels.xml"));
        XmlReader.Element root = element.getChildByName("levels");
        currentLevel = root.getInt("currentLevel");
        XmlReader.Element level = root.getChildByName("Level1");
        lineAngle = level.getInt("lineAngle");
        speed = level.getFloat("speed");
        direction = level.getInt("direction");
    }catch (Exception e){} 

But I can not get any value from xml. For example, I expect lineAngle to be 14, but it is 0. Could you explain to me why this is so? And any solution would be great. Thank.

+4
source share
1 answer

When you parse the file into an element, you are already at the root of your XML. This works for me:

XmlReader xml = new XmlReader();
    try {
        // Element is the root element of your document, i.e. <levels>
        XmlReader.Element element = xml.parse(Gdx.files.internal("D:\\someFolder\\android\\assets\\levels.xml"));
        currentLevel = element.getInt("currentLevel");
        XmlReader.Element level = element.getChildByName("Level1");
        lineAngle = level.getInt("lineAngle");
        speed = level.getFloat("speed");
        direction = level.getInt("direction");
    } catch (Exception e) {
    }

I also had to give the full path to levels.xml, for example: "D: \ someFolder \ android \ assets \ levels.xml"

+1
source

Source: https://habr.com/ru/post/1599416/


All Articles