3
  • 我在资产目录(com.android.project\assets\xml\file.xml)下有 xml 文件。
  • 我想调用一个(以下)函数来读取 xml 文件并将内容作为字符串返回。
  • 该函数需要path文件作为字符串。我不知道如何将文件的路径作为字符串给出。

    private String getXML(String path){
    
      String xmlString = null;
    
      AssetManager am = this.getAssets();
      try {
        InputStream is = am.open(path);
        int length = is.available();
        byte[] data = new byte[length];
        is.read(data);
        xmlString = new String(data);
      } catch (IOException e1) {
          e1.printStackTrace();
      }
    
      return xmlString;
    }
    

文件.xml:

    <Items>
        <ItemData>
            <ItemNumber>ABC</ItemNumber>
            <Description>Desc1</Description>        
            <Price>9.95</Price>        
            <Weight>10.00</Weight>    
        </ItemData>    
        <ItemData>        
            <ItemNumber>XYZ</ItemNumber>        
            <Description>"Desc2"</Description>        
            <Price>19.95</Price>
            <Weight>22.22</Weight>
        </ItemData>
    </Items>

问题:

  • getXML(String path)如果我的文件位于 \assets\xml\file.xml 下,如何使用路径作为字符串参数调用函数?

  • 最后,有没有更好的方法将 XML 文件作为字符串读取?

谢谢!

4

2 回答 2

2

以下将起作用:

InputStream is = context.getAssets().open("xml/file.xml");
于 2012-10-04T08:02:43.377 回答
1

该路径只是使用正斜杠 (/) 的资产目录下的路径

所以 assets/x/yz 被引用为 this.getAssets().open("x/yz");

这不是读取数据的正确方法 - Inputstream.read 不保证读取它返回读取的字节数的所有数据 - 这可能适用于较小的文件,但您可能会遇到较大的问题。

这是我用来读取文本文件的通用代码,而不是 FileReader 使用 InputStreamReader

StringBuilder sw = new StringBuilder();
BufferedReader reader = new BufferedReader( new FileReader(file));
String readline = "";
while ((readline = reader.readLine()) != null) { 
    sw.append(readline);
}
String string = sw.toString();
于 2012-10-04T07:56:42.187 回答