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