[英]How to build a constructor in Java that read an xml file?
我正在用Java创建一个小的棋盘游戏,我想在XML文件中实现游戏关卡(即每个关卡,关卡ID,棋盘的高度和长度以及每个单元格的定义),然后通过询问用户他想要玩的级别来构建棋盘。
我已经在Board类中构建了一个经典的构造函数,没有使用XML文件,并且没有使用if(因此我将每个级别的描述都放在了代码中)。 问题是,每次我想添加一个关卡时,都需要再次编译。
谢谢 !
看一下此页面,看看它是如何在Java中完成的: Java XML Parsers 。 Java内置了大约四个不同的解析器(在新版本中可能更多)。
现在关于构造函数:
public Board(String pathToXML) {
// Add code parsing the XML
}
在调用构造函数之前,可以将参数作为参数发送给main方法。
public static void main(String[] args) {
String pathToXML = args[0];
Board b = new Board(pathToXML);
}
请记住,参数从0开始,而不是1。
简短的答案:请勿尝试在您的电路板构造函数中解析XML文件。
您似乎已经有了一个有效的构造函数和有效的类来为您设置板。 将这些类传递给Board构造函数。 让某种工厂为您创建实例。
请勿将XML解析逻辑与棋盘游戏逻辑混在一起。 那是两个完全不同的事情。 根据单一职责规则,应将其分开存放。
正确完成后,您应该能够从XML文件或任何其他来源创建具有临时配置代码的电路板。 换句话说:数据来自哪个板块都没有关系。
XML文件应如下所示:
<Levels>
<Level id="1">
<h>2</h>
<l>2</l>
<plateau key="value">
<cells>
<cell row="0" column="0" color="black">
</cell>
<!-- ... -->
</cells>
</plateau>
使用XML解析器解析从文件中读取的数据。 将结果传递给Board构造函数,例如伪代码:
List<Level> levels = parseLevels(...);
new Board(levels.get(0));
“ parseLevels()”的实现可能很棘手。 我建议您使用JAXB来解析文件并创建数据结构。 尝试本教程: https : //www.baeldung.com/jaxb
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.