我在XML文件上使用SAX解析器來創建引用對象的對象。將XML文件解析爲鏈接的java對象
<?xml version="1.0"?>
<xml encoding="UTF-8" version="1.0">
<course number="CSC212">
<textbook name="BookFor212"/>
</course>
<course number="CSC241">
<prereq number="CSC212"/>
<textbook name="BookFor241"/>
<textbook name="AnotherBookFor241"/>
</course>
<course number="CSC455">
<prereq number="CSC241"/>
<prereq number="CSC365"/>
<textbook name="BookFor455"/>
</course>
<course number="CSC365">
<prereq number="CSC241"/>
<textbook name="BookFor365"/>
<textbook name="AnotherBookFor365"/>
<textbook name="YetAnotherBookFor365"/>
</course>
</xml>
所以我創建一個進程和教科書和prereqs添加到過程內的各個陣列和完成I的過程添加到陣列。解析後,用戶會被提示輸入課程編號,程序會吐出信息,包括前提條件以及它們所包含的所有內容,以及他們的教科書和前提條件。
public class Course {
private String number;
private Course[] prereqs = new Course[5];
private int pCounter = 0;
private Textbook[] books = new Textbook[5];
private int tCounter = 0;
public Course(String n) {
number = n;
}
public String getNumber() {
return number;
}
public void addPrereq(Course prereq) {
prereqs[pCounter++] = prereq;
}
public void addTextbook(Textbook book) {
books[tCounter++] = book;
}
public String toString() {
String retVal = "Course: " + number + (tCounter == 0 ? ", No books." : ", textbooks: ");
for (int i = 0; i < tCounter; i++)
retVal += books[i].toString() + " ";
retVal += "\n" + (pCounter == 0 ? "No prerequisites.\n" : "Prerequisites:\n");
for (int i = 0; i < pCounter; i++)
retVal += prereqs[i].toString();
return retVal + "End of course " + number + ".\n";
}
}
的問題是添加prereqs我通過已經建立的課程陣列看,如果它的存在,使用它,並創建一個新的,如果它不是時。所以如果它不在那裏,我會添加一個課程,除了它的編號之外,沒有任何信息。所以我最終選擇的課程CSC455有一個prereq CSC365,但沒有列出任何教科書或先決條件。我怎樣才能做到這一點,以便prereqs是完成課程?
你需要做一個兩遍解析;在課程中存儲'String' prereq,然後創建一個'Map'並在課程'resolvePrereq(final Map lookupMap)'上有某種方法,然後循環並調用。 –
2013-03-07 20:39:14
如果您爲「課程」添加源代碼,那麼對於解決方案而言,更容易具體。 – 2013-03-07 20:41:43
這就是我想要做的,但我真的不知道如何。 – DarkLordAllie 2013-03-07 20:48:51