2011-07-11 139 views
0

嗨我想解析一个本地xml文件(它有数据库表信息)并最终将信息存储在SQLite数据库中。它存储在我在res下创建的原始文件夹中。解析Android本地xml并存储在SQLite数据库

但我不知道如何打开它并使用SAX解析器进行解析。通过不同的教程,但没有工作。

如果有人可以指导我的伟大。谢谢

+0

请参阅http://stackoverflow.com/questions/6079637/xmlpullparser-how-to-attain-res-raw-xml-xmlfilename。 – Femi

+0

我需要使用SAX解析器。我认为它高效。你有任何想法如何打开本地XML文件,并解析它与SAX解析器。之后,我需要将信息存储在SQLite数据库中。有没有可能或者其他简单而有效的方法? – JibW

回答

0

您可以使用openRawResourcegetResources().openRawResource(R.id.{resourcename}))获得InputStream。然后,您可以像传统文件那样将该InputStream传递给SAX解析器。

+1

有关更多详细信息,请参阅http://stackoverflow.com/questions/4991839/android-parsing-large-files-using-sax-parser:它实际上看起来像您想要的(它也描述了您可能必须处理的一些尺寸限制用)。那个工作的Ya ... – Femi

+0

。 openRawResource(getResources()。openRawResource(R.id. {resourcename}))。有没有一种简单的方法将该输入流转换为String ????? – JibW

+0

那么,http://stackoverflow.com/questions/309424/in-java-how-do-a-read-convert-an-inputstream-in-to-a-string有一些选项,你可能要考虑。 – Femi

0

我创建XML数据在Android XML解析器,这是一个字节数组,如下所示:

创建扩展的DefaultHandler的类。

在这个类类似于以下创建方法:

public void ParseXMLByteArray(byte[] xmlData, int len) 
{ 
    SAXParserFactory spf = SAXParserFactory.newInstance(); 
    try 
    { 
     // Create a SAX parser 
     SAXParser mySP = spf.newSAXParser(); 
     // Get an XML reader from the parser 
     XMLReader myXR = mySP.getXMLReader(); 
     // Tell the reader this class will supply content callbacks 
     myXR.setContentHandler(this); 
     // Kick off the parse operation 
     // You will get ContentHandler callbacks via DefaultHandler overrides 
     myXR.parse(new InputSource(new ByteArrayInputStream(xmlData, 0, len))); 
    } 
    catch (Exception excp) 
    { 
     // Handle exceptions 
    } 
} 

你当然会想使输入源的本地文件。你的DefaultHandler覆盖会处理这些元素并将它们添加到你的数据库中。

+0

你正在试图解析的文件在哪里? –

+0

它存储在一个名为raw的文件夹中。原始文件夹位于我的eclipse android项目中的res文件夹内 – JibW

相关问题