【问题标题】:Cannot parse value from xml to code libgdx无法将 xml 中的值解析为代码 libgdx
【发布时间】:2015-07-23 23:22:01
【问题描述】:

我正在尝试将 xml 文件中的数据解析到我的 libgdx 游戏。我的 xml 文件如下所示:

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

我在 show 方法中调用以从 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){} 

但我无法从 xml 中获得任何价值。例如,我希望 lineAngle 为 14 但它是 0。你能解释一下为什么会这样吗?任何解决方案都会很棒。谢谢。

【问题讨论】:

    标签: java xml xml-parsing libgdx


    【解决方案1】:

    当您将文件解析为元素时,您已经位于 XML 的根目录。 这对我有用:

    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) {
        }
    

    我还必须给出levels.xml的完整路径,例如:“D:\someFolder\android\assets\levels.xml”

    【讨论】:

    • 一开始按你说的方法试了下,还是不行。但是现在我删除了调用根元素的行,而不是使用 getInt(),我使用 getattribute 并将其转换为整数,它可以按我的意愿工作。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 2018-01-13
    • 2013-11-22
    • 2022-11-15
    • 2017-09-16
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多