2013-05-19 60 views
0

我想使用Java從頭到尾讀取XML。但是,我不想使用遞歸函數,因爲我希望能夠跳轉到不同的元素並從該位置開始讀取。Java XML從上到下讀取XML文件

我已經嘗試過使用getParent()indexOf()方法(下面的所有三個庫都有這些方法)來做到這一點,但它變得非常混亂,主要是因爲方法不區分屬性和元素。

我確定必須有一個簡單的方法來做到這一點,但在嘗試dom4j,jdomxom後,我仍然沒有找到解決方案。

[編輯]更多信息:

我的朋友想做一個基於文本控制檯遊戲在提問/回答式的風格。我決定嘗試讓它讀取一個XML文件,而不是將其硬編碼爲java,因爲XML具有類似樹的樣式,這很方便。這裏是我的XML文件可能看起來像一個例子:

<disp>Text to be displayed</disp> 
<disp>Text to be displayed afterward</disp> 
<disp>What is your favorite color?</disp> 
<question> 
    <answer name="orange"> 
     <disp>Good choice.</disp> 
     <!-- More questions and stuff --> 
    </answer> 
    <default> 
     <disp>Wrong. The correct answer was orange.</disp> 
    </default> 
</question> 

我不知道它是否禁忌使用像僞編程語言的XML。如果有人有其他建議,隨時給他們。

+0

你能多解釋一下,你想達到什麼目的?我不知道你的問題是什麼。你提到了getParent()和indexOf()方法,但是你忘了補充說它們是JDOM的一部分。下次也會提到這一點,以便我們不會浪費時間來研究您已有的信息。 – vanje

回答

1

您的設計基本上是好的和Declarative Programming一個例子。您應該使用XML解析器將您的XML文件讀入DOM或使用SAX。因爲我認爲你會想重新訪問節點,所以我懷疑你需要一個DOM(FWIW,我使用XOM,xom.nu)。基於XML的聲明式編程的最好例子之一是XSLT,其中數據和命令都是XML。

我使用這個模型很多。它的優點是數據結構可以是外部的並且可以編輯。

(請注意,您需要XML根元素)

,但它變得很凌亂,這主要是因爲方法不區分 屬性和元素之間。

所有的DOM或SAX工具都非常清楚地區分屬性和元素,所以如果出現混淆,它就是其他地方。

0

如果您想要顯示您想要的XML片段,但通常如果您想讀取任何類型的文件,那麼使用java.util.Scanner會很好。

Scanner scan = new Scanner (new File("file.xml")); 
while (scan.hasNext()) { 
    String theData = scan.nextLine(); 
} 
scan.close(); 

這應該返回你需要,直到用完線掃描的值。 希望它的作品和快樂編碼!

+0

XML不是面向行的語言。行甘蔗分裂或以許多不同的方式合併。使用XML解析器。 –