2011-03-28 22 views
2

我解析XML數據成功幾次之前,但它的第一次在android中做同樣的事情。我曾嘗試使用DOM,但每次都會在.parse方法上發生錯誤。我在網上搜索並嘗試多次,但沒有任何成功。我所需要做的就是從本地文件獲取xml數據,將其作爲參數放入一些函數中。我在主Activity的onCreate方法中實現了代碼。這是我通常做的,但是這次沒有任何成功:從本地文件解析在android的xml

try { 

       File xmlFile = new File("C:\\Users\\gg90\\Desktop\\testingxml.xml"); 


       DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
       DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
       Document doc = dBuilder.parse(xmlFile); 
       doc.getDocumentElement().normalize(); 

希望你能幫助我。謝謝!

回答

3

沒有驅動器C的概念:在android中,所以我猜你的文件是無效的,解析器扼殺它。 Android使用unix文件系統,所以路徑看起來像/data/file.xml等等。

要解析資產文件夾中的xml文件,請查看this code,它打開文件夾,獲取文件並打開輸入流。然後撥打this method

+0

那麼如何從本地文件解析? – g90 2011-03-28 13:24:53

+1

您基本上需要找出它的位置 - 很遺憾,您沒有說它在文件系統中的位置。 – 2011-03-28 13:26:18

+0

我試了一下,但程序崩潰了行AssetManager assetManager = context.getAssets();我不能相信它爲什麼在android中如此複雜:S – g90 2011-03-28 13:50:35

2

1 /在res,創建新的文件夾:生==/RES /原始 複製文件testingxml.xml並粘貼上面通過使用SOM到文件夾從位置原料

2. /解析XML(OU如果你想SAX)

InputStream catDoc = context.getResources().openRawResource(R.raw.testingxml); 

//Using factory get an instance of document builder 
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
//parse using builder to get DOM representation of the XML file 
    dom = builder.parse(catDoc, null); 
+0

非常感謝你!它工作:) – g90 2011-03-28 15:20:02

0

所以去到項目文件夾,找到RES文件夾,然後創建一個新文件夾中有名爲「RAW」 ,把你的XML文件中,有並刷新該項目,直至其在自動生成的更新R.java作爲一個類。 現在你可以使用R.RAW.XYZ.xml ... :)

1

嘗試創建一個名爲原料RES文件夾中的文件夾,並把XML文件存在通過您的項目工作區。刷新項目,直到它在R.java中更新。然後使用此代碼:

InputStream file = this.getResources().openRawResource(R.raw.license_status); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(file); 
doc.getDocumentElement().normalize();