2 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
簡(jiǎn)短回答:不要嘗試解析板構(gòu)造函數(shù)中的XML文件。
您似乎已經(jīng)有了一個(gè)有效的構(gòu)造函數(shù)和有效的類(lèi)來(lái)為您設(shè)置板。將這些類(lèi)傳遞給Board構(gòu)造函數(shù)。讓某種工廠為你創(chuàng)建實(shí)例。
不要將XML解析邏輯與Board游戲邏輯混合在一起。這是兩件完全不同的事情。根據(jù)單一責(zé)任規(guī)則,它應(yīng)該分開(kāi)。
如果操作正確,您應(yīng)該能夠在XML-File或任何其他來(lái)源的代碼中創(chuàng)建具有ad-hoc配置的電路板。換句話(huà)說(shuō):對(duì)于數(shù)據(jù)來(lái)源的董事會(huì)而言,這無(wú)關(guān)緊要。
XML文件看起來(lái)應(yīng)該更像這樣:
<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解析器解析從文件中讀取數(shù)據(jù)。將結(jié)果傳遞給Board構(gòu)造函數(shù),例如偽代碼:
List<Level> levels = parseLevels(...);new Board(levels.get(0));
'parseLevels()'的實(shí)現(xiàn)可能很棘手。我建議您使用JAXB來(lái)解析文件并創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。試試這個(gè)教程:https: //www.baeldung.com/jaxb

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
看一下這個(gè)頁(yè)面,看看它是如何在Java中完成的: Java XML Parsers。Java中內(nèi)置了大約四種不同的解析器(可能在更新的版本中更多)。
現(xiàn)在關(guān)于構(gòu)造函數(shù):
public Board(String pathToXML) { // Add code parsing the XML}
在調(diào)用構(gòu)造函數(shù)之前,可以將參數(shù)作為參數(shù)發(fā)送到main方法。
public static void main(String[] args) { String pathToXML = args[0]; Board b = new Board(pathToXML);}
請(qǐng)記住,參數(shù)從0開(kāi)始,而不是1。
添加回答
舉報(bào)