如何在Java中构建读取XML文件的构造函数?

时间:2019-05-13 09:48:54

标签: java xml

我正在用Java创建一个小型棋盘游戏,我想在XML文件中实现游戏关卡(即,每个关卡,关卡ID,棋盘的高度和长度以及每个单元的定义) ,然后通过询问用户他想要玩的级别来构建棋盘。

我已经在Board类中构建了一个经典的构造函数,没有XML文件和if(因此,我将每个级别的描述都放在了代码中)。问题是每次我想添加一个关卡时,都需要重新编译。

谢谢!

2 个答案:

答案 0 :(得分:1)

看看此页面,看看它是如何用Java完成的: Java XML Parsers。 Java内置了大约四个不同的解析器(在新版本中可能更多)。

现在关于构造函数:

public Board(String pathToXML) {
   // Add code parsing the XML
}

在调用构造函数之前,可以将参数作为参数发送给m​​ain方法。

public static void main(String[] args) {
    String pathToXML = args[0];
    Board b = new Board(pathToXML);
}

请记住,参数从0开始,而不是1。

答案 1 :(得分: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