Libgdx之XML文件解析
Posted zqiang_55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 XMLTest extends ApplicationAdapter
@Override
public void 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
以上是关于Libgdx之XML文件解析的主要内容,如果未能解决你的问题,请参考以下文章