我正在寫一個朋友的小項目。記事卡應用程序。 我的計劃是將記錄卡放入xml格式,以便我可以輕鬆導入和導出它們。 我找到assets/xml/mynotecard.xml文件夾中的xml文件,但我無法設法訪問此文件。如何在我的android應用程序中訪問assets文件夾?
每當我嘗試解釋xml文件(稍後將放在它的類上)我得到的異常:test.xml不是一個文件。 這是我的代碼的摘錄:
公共類NotecardProActivity延伸活動{
List<String> xmlFiles;
public ArrayList<File> xmlFileList;
XMLInterpreter horst;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final AssetManager mgr = getAssets();
displayFiles(mgr, "",0);
xmlFiles = displayFiles(mgr, "xml",0);
for (int e = 0; e<=xmlFiles.size()-1;e++)
{
Log.v("Inhalt List"+e+": ", xmlFiles.get(e));
}
xmlFileList = new ArrayList<File>();
for (int i = 0; i<=xmlFiles.size()-1;i++)
{
xmlFileList.add(new File("./assets/xml/"+xmlFiles.get(i)));
}
for (int i = 0; i<=xmlFileList.size()-1;i++)
{
Log.v("Name: ", xmlFileList.get(i).getName());
Log.v("Filelocation: ",xmlFileList.get(i).getPath());
Log.v("Filelocation: ",xmlFileList.get(i).getAbsolutePath());
}
Log.v("DEBUG","XML FILE LISTE erfolgreich geschrieben!");
//Alternative zum ausgelagerten XML INTERPRETER
try
{
if(xmlFileList.get(0) == null){
Log.v("Debug", "XMLFILE IS NULL");
}
else{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFileList.get(0));
doc.getDocumentElement().normalize();
Log.v("Root element :", doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("notecard");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
Log.v("GesetzesText: " , getTagValue("legal_text", eElement));
// System.out.println("Kommentar : " + getTagValue("comment", eElement));
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
mgr.close();
}
private List<String> displayFiles (AssetManager mgr, String path, int level) {
List<String> abc = new ArrayList<String>();
Log.v("Hello","enter displayFiles("+path+")");
try {
String list[] = mgr.list(path);
abc.addAll(Arrays.asList(list));
Log.v("Hello1","L"+level+": list:"+ Arrays.asList(list));
} catch (IOException e) {
Log.v("Fail","List error: can't list" + path);
}
return abc;
}
private String getTagValue(String sTag, Element eElement) {
NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node) nlList.item(0);
return nValue.getNodeValue();
}
}
將是真正真棒,如果你們能幫助我: )
所以它會像/root/assets/xml/test.xml?另外,什麼是一個很好的解決方法?因爲我喜歡資產的文件夾結構,我不希望我的XML文件躺在res文件夾:( – dhartwich 2012-04-22 11:42:17
編輯答案 – TacB0sS 2012-04-22 11:42:42
沒有解決方案,據我所知...這是一個限制。另一個問題是,資產沒有在項目依賴關係中進行彙總,這意味着:如果您有一個包含資產的apklib,這些資產將不會彙總到依賴項目。 – TacB0sS 2012-04-22 11:44:55