【问题标题】:Parse Android Local xml and store in SQLite DB解析 Android Local xml 并存储在 SQLite DB 中
【发布时间】:2011-10-02 23:16:10
【问题描述】:

您好,我正在尝试解析本地 xml 文件(其中包含数据库表信息)并最终将信息存储在 SQLite DB 中。它存储在我在 res 下创建的原始文件夹中。

但我不知道如何打开它并使用 SAX 解析器进行解析。浏览了不同的教程,但没有奏效。

如果有人可以指导我,那就太好了。谢谢

【问题讨论】:

  • 我需要使用 SAX 解析器。我认为它的效率。您是否知道如何打开本地 xml 文件并使用 SAX 解析器对其进行解析。之后,我需要将信息存储在 SQLite DB 中。是否有可能或任何其他简单有效的方法???

标签: android xml-parsing


【解决方案1】:

您可以使用openRawResource (getResources().openRawResource(R.id.{resourcename})) 获取 InputStream。然后,您可以将该 InputStream 传递给您的 SAX 解析器,就像它是一个常规文件一样。

【讨论】:

  • 更多细节请参见stackoverflow.com/questions/4991839/…:这实际上看起来像您想要的(它还描述了您可能必须处理的一些尺寸限制)。
  • 是的……那行得通。 openRawResource (getResources().openRawResource(R.id.{resourcename}))。有没有一种简单的方法可以将该输入流转换为字符串??????
  • 好吧,stackoverflow.com/questions/309424/… 有一些您可能需要考虑的选项。
【解决方案2】:

我在 Android 上为字节数组中的 XML 数据创建了一个 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 覆盖将处理元素并将它们添加到您的数据库中。

【讨论】:

  • 您要解析的文件在哪里?
  • 它存储在一个名为 raw 的文件夹中。原始文件夹位于我的 Eclipse android 项目中的 res 文件夹中
猜你喜欢
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多