繁体   English   中英

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

[英]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
}

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM