我是Android新手我正在尝试从Android和xml文件读取和写入一些信息。我认为如果我使用DOM解析器来做这种事情是可能的......我在应用程序的开始处读取文件以获取数据并在应用程序终止之前尝试保存以存储配置更改。我想出了如何从raw/xml读取文件,但它似乎是一个真正的痛苦(甚至不可能)将修改后的xml保存在这里... 也许我采取错误的方法,但我相信它应该有可能以某种方式在Android中修改一些内部xml文件。如何去做呢?使用DOM解析器读取和写入内部android xml文件
0
A
回答
0
您不能修改或更新raw/xml
文件目录。 Android /res
目录是只读。所以你只能从它读取文件而不允许回写。 (由于Android .apk文件具有只读权限)。
0
ü存储在机器人app.u需要xml folder
到copy
该文件,而安装在设备上的应用程序,以sdcard/internal storage
和修改it.In这种情况下,U可以使用DOM解析器读取和SD卡从/内部存储编写XML文件cant modify
XML的设备。
0
@ user370305是对的!
简单的逻辑是,你不能在运行时在存储器(原始资产,资产,布局等)内部创建一个文件。因此你可以通过授予“write_external_storage”权限在外部创建一个不同的文件。然后你可以阅读或写作。
下面是一个例子
public void readXML() throws IOException{
//get the xml file from the raw folder
InputStream is = getResources().openRawResource(
R.raw. config);
Resources r = getResources();
AssetManager assetManager = r .getAssets();
//then write the dummy file
File f = new File(Environment.getExternalStorageDirectory(), "dummy.xml");
OutputStream os = new FileOutputStream(f , true);
final int buffer_size = 1024 * 1024;
try
{
byte [] bytes = new byte [buffer_size ];
for (;;)
{
int count = is.read(bytes, 0, buffer_size);
if (count == -1)
break ;
os.write(bytes , 0, count);
}
is.close();
os.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
//then parse it
parseConfigXML(f);
}
public String parseConfigXML(File configXML) {
XmlPullParser xpp = null ;
String httpUrl= "";
FileInputStream fis ;
XmlPullParserFactory factory = null ;
try {
fis = new FileInputStream(configXML);
factory = XmlPullParserFactory.newInstance();
factory .setNamespaceAware(true);
xpp = factory .newPullParser();
xpp .setInput(new InputStreamReader(fis));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser. END_DOCUMENT) {
if (eventType == XmlPullParser. START_DOCUMENT) {
} else if (eventType == XmlPullParser. START_TAG) {
} else if (eventType == XmlPullParser. END_TAG) {
} else if (eventType == XmlPullParser. TEXT) {
httpUrl += xpp .getText().replace("\n", "");
}
eventType = xpp .next();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return httpUrl .trim().replace("\n", "");
}
相关问题
- 1. 如何使用JxPath和DOM解析器解析XML文件
- 2. (读取和)从内部存储解析XML文件
- 3. 在android中使用DOM解析器解析存储在内部存储器中的XML文件。
- 4. 如何从assets文件夹读入DOM XML解析器?
- 5. 使用DOM解析器和SAX解析器进行Android XML解析的区别
- 6. 如何使用xml sax解析器读取和写入大型xml?
- 7. 使用xml解析器读取xml
- 8. 使Android XML读取器仅读取XML文件的一部分
- 9. Doc xml解析器android本地xml文件读取
- 10. 从Android手机的内部存储器写入/读取文件
- 11. 如何读取和解析.xml文件
- 12. Android将文件读取和写入内部存储
- 13. IOS和XML解析器(读文件)
- 14. 使用DOM解析器的Android XML解析问题
- 15. 解析XML DOM文件
- 16. 读取和写入XML文件
- 17. 解析用java(DOM解析器)多级XML文件
- 18. PHP XML Expat解析器:如何只读取部分XML文档?
- 19. 在Android上使用DOM来读取,写入和编辑磁盘上的文件
- 20. 读取和解析文件
- 21. 如何在android中使用dom解析本地xml文件?
- 22. SAX XML解析器或DOM解析器?
- 23. Android - 从文件读取和写入
- 24. 读取和写入文件Android
- 25. 使用mex读取和写入文件
- 26. Perl的XML :: DOM解析器使用
- 27. 使用DOM解析XML
- 28. Java - 使用DOM解析xml
- 29. 使用DOM解析XML
- 30. gdata xml使用dom解析
我预料到......有另一种方式来存储在Android的xml文件内部,仍然有对写入权限或者它只是不可能的,我必须访问某些外部XML文件(例如通过网络)来做到这一点? – user2183977 2013-04-24 09:49:51
您可以在路径'/ data/data/<软件包名称>/files'中将它存储在设备空间的应用程序内部存储器中。在应用程序中,您可以使用'getFilesDir();' – user370305 2013-04-24 09:51:52
获取此路径请查看http://developer.android.com/guide/topics/data/data-data-storage.html#files内部 – user370305 2013-04-24 09:54:14