如何使用Java在编译时读取文件?

时间:2018-04-05 13:58:45

标签: java android xml

我有一个项目,包括读取1000个XML文件,每个文件定义处理不同类型数据的规则。结果是应用程序在启动时需要几秒钟才能加载XML文件。这是一个Android移动应用程序,所以CPU不是很强大。

有没有办法在编译时通过读取这些XML文件来创建静态对象?如果我可以通过定义已经读入XML的静态对象来预处理XML,那么应用程序应该能够以更快的速度开始加载。 XML文件在运行时无法更改的缺点是可以接受的。

这是一个通用的问题 - 我不一定会使用任何特定的方法或库。任何允许我预先解析XML的东西都可以。但是当评论询问我当前的运行时解析实现时,我在以下段落中提供它,它使用Java附带的DOM解析器。

目前的实施:

XML处理类只是通过读取每个XML文件来创建对象。它的使用方式如下:

lst.add(XMLData(new FileInputStream(new File("assets/001.xml"))));
lst.add(XMLData(new FileInputStream(new File("assets/002.xml"))));
....

其中XMLData是读取XML文件并保留相关信息的对象。 lstList个此类对象。

XMLData类如下所示:

class XMLDAta {
  public XMLData(InputStream xml) throws IOException, SAXException {
   DocumentBuilder dBuilder;
    try {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        dBuilder = dbFactory.newDocumentBuilder();
    } catch (ParserConfigurationException e) {
        // TODO: if schema has problems (e.g. defined twice).
        // all XML well-formedness were checked before shipping them
        e.printStackTrace();  // shouldn't happen
        return;
    }
    Document xml = dBuilder.parse(xmlAsset);

0 个答案:

没有答案