从包含JAR读取XML文件

时间:2014-06-26 02:56:40

标签: java xml eclipse

我正在尝试从我的JAR内部读取XML文件。

我的文件夹结构如下:

[root]  
    src (source folder)  
        [my java files]
    res (source folder)
        xml
            lorem_ipsum.xml (xml file I wish to read)

我正在尝试使用此代码来读取文件:

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbfac.newDocumentBuilder();
ClassLoader cl = Thread.currentThread().getContextClassLoader();
InputStream stream = cl.getResourceAsStream(path);

if(stream == null) {
    return null;
}

Document doc = db.parse(stream);

但它不起作用。当我将stream指定为/xml/lorem_ipsum.xml时,path保持为空。

3 个答案:

答案 0 :(得分:1)

根据您发布的目录结构...

[root]  
    src (source folder)  
        [my java files]
    res (source folder)
        xml
            lorem_ipsum.xml (xml file I wish to read)

res似乎不是一个嵌入式资源。而是尝试使用new File("res/xml/lorem_ipsum.xml")而不是尝试从类资源上下文中获取InputStream

答案 1 :(得分:0)

我会尝试使用类的ClassLoader,并使用相对于jar结构的完整路径,如:

String path = "res/xml/lorem_ipsum.xml";

// you would rename "MyClass" to the actual name of your class.
ClassLoader classLoader = MyClass.class.getClassLoader(); 
InputStream is = classLoader.getResourceAsStream(path);

答案 2 :(得分:0)

使用资产管理器

AssetManager assetManager = getAssets();

try {
   input = assetManager.open("helloworld.txt");

          int size = input.available();
          byte[] buffer = new byte[size];
          input.read(buffer);
          input.close();

          // byte buffer into a string
          String text = new String(buffer);

          txtContent.setText(text);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

asset manager