Libgdx之XML文件解析

前端之家收集整理的这篇文章主要介绍了Libgdx之XML文件解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在游戏开发过程中,经常需要保存游戏数据,XML文件就是一个不错的选择。Libgdx也提供我们一个轻量级的解析工具XmlReader,XmlReader能够解析出XML文件的子元素,属性,文本等,同时要保证文件是UTF-8编码,否则文件无法解析

public XmlReader.Element parse(FileHandle file) throws java.io.IOException 方法解析XML元素,返回Element对象,之后对XML各个元素的操作就交给Element来处理

XmlReader.Element 代表了XML的元素,提供了各个方法获取XML的子元素和元素属性,下面截图展示了XML文件的构成

结合上面图片来参照下面代码,很容易看出XML的解析过程

public class @H_403_22@XMLTest extends @H_403_22@ApplicationAdapter {

    @Override
    public void @H_403_22@create() {
        try {
            XmlReader reader = new XmlReader();
            /** * root是整个xml文件从根节点算起,此处是指<Credits> </Credits> */
            Element root = reader.parse(Gdx.files.internal("Book.xml"));
// System.out.println(root);
            System.out.println("root.name:" + root.getName());
            // 
            System.out.println("child num: " + root.getChildCount());

            Element bookElement = root.getChildByName("Book"); // <Book year="2014" pages="300" >Libgdx Game Development Cookbook</Book>

            System.out.println("Name:" + bookElement.getName());
            System.out.println("Title: " + bookElement.getText());
            System.out.println("Year: " + bookElement.getInt("year")); // Attributes 通过属性名称来访问
// System.out.println("Number of pages: " + bookElement.getInt("pages")); // 也可以通过方法getAttribute
            System.out.println("Number of pages: " + bookElement.getIntAttribute("pages")); // 和上面方法效果一样

            Array<Element> authors = root.getChildrenByNameRecursively("Author");  // 递归遍历,否则的话返回null
            /** 下面的方法也能遍历出author来 上面方法是同Author来获取读者,一步到位,下面是通过Authors来获取读者节点,还要接着解析节点 Element authorsElement = root.getChildByName("Authors"); int childNum = authorsElement.getChildCount(); for (int i = 0; i < childNum; i++) { System.out.println(" * " + authorsElement.getChild(i).getText()); } */

            System.out.println("Authors: ");

            for (Element author : authors) {
                System.out.println(" * " + author.getText());
            }

            Array<Element> reviewers = root.getChildrenByNameRecursively("Reviewer");

            System.out.println("Reviewers: ");

            for (Element reviewer : reviewers) {
                System.out.println(" * " + reviewer.getText());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        Gdx.app.exit();
    }

}

在实际游戏开发过程中解析出XML文件还要继续处理解析出的数据,其过程要比这个复杂的多,在练习的过程中用有写过十滴水的代码,里面就用到了XML文件解析,有感兴趣的可以参照: https://github.com/Strong-it/TenWater_Libgdx

猜你在找的XML相关文章