2011-02-09 54 views
0

我在這裏感覺有些笨拙。我正在按章>場景>對話存儲始終按頂層組織的數據集。對話總是有幾個屬性,有時還有額外的數據,這些數據總是存儲在一個有組織的層次結構中(條件集或一組選擇集,每個屬性都有自己的屬性可供讀取)。想象一下,選擇你自己的冒險書,它的所有規則都存儲在一個XML文檔中。這似乎是存儲它的最佳方式,我很歡迎矛盾。Android:從XML中讀取特定節點而不解析整個文檔

我將始終從第1章場景1對話1開始。每個對話,無論是通過屬性還是條件,都會引導我到單個新節點,例如第3章場景2對話8。將永遠不必分析整個文檔尋找章節,場景或對話標籤。但是,我確實想解析給定的對話節點來查看其包含的條件或選擇集。

我不能爲我的生活找到如何指定,在Android中,相當於:

XMLResourceParser parser = getResources().getXml((R.xml.script).getChild[CHAPTER][SCENE][DIALOGUE]); 

雖然我每次解析整個文檔並反覆關閉,以配合我的索引和了解我在哪裏,似乎完全沒有要求。有什麼想法嗎?我所看到的每個人都在尋找需要閱讀整個文檔的問題的解決方案,而答案始終在於如何使用解析器。

回答

0

它不清楚你到底在找什麼。如果你想讀入一個xml文件,並且你只關心文件中的幾個節點,你可以使用SAX或者拉解析器來只聽你關心的節點。這篇文章xml in Android有兩個例子。

如果您關心整個文檔,但只想簡單地瀏覽導航到樹中的特定元素,可以選擇幾個選項。您可以將XML解析爲一個dom文檔(上文中的第三個選項),並使用getElementsByTagName等函數來遍歷樹。

或者,您可以考慮使用XPath。有關概覽,請參閱此documentation

+0

我想一個更簡單的方法來說,不是通過他們的名字來標識節點,我想根據它們的深度來指定節點的數量,就像它是一個數組一樣。在AS3中,我有一個名爲XMLList的類型,它允許我用一個函數getChildAt(index)執行此操作,該函數僅返回該索引處的XML對象,因此如果知道索引編號,我可以在解析前減少大量文檔。 – robodevil 2011-02-09 18:34:21