使用DOM解析器读取和写入内部android xml文件
我是Android新手,我正在尝试在Android中从xml文件读写一些信息。我想如果我使用DOM解析器来做这些事情是可能的。。。我在应用程序运行时读取文件以获取数据,并试图在应用程序终止以存储配置更改之前进行保存。我知道了如何从raw/xml读取文件,但在这里保存修改后的xml似乎真的很痛苦(甚至不可能)。。。使用DOM解析器读取和写入内部android xml文件,android,xml,Android,Xml,我是Android新手,我正在尝试在Android中从xml文件读写一些信息。我想如果我使用DOM解析器来做这些事情是可能的。。。我在应用程序运行时读取文件以获取数据,并试图在应用程序终止以存储配置更改之前进行保存。我知道了如何从raw/xml读取文件,但在这里保存修改后的xml似乎真的很痛苦(甚至不可能)。。。 也许我采取了错误的方法,但我相信应该可以在Android中以某种方式修改一些内部xml文件。如何操作?您不能修改或更新raw/xml文件目录。Android的/res目录是只读的。所以
也许我采取了错误的方法,但我相信应该可以在Android中以某种方式修改一些内部xml文件。如何操作?您不能修改或更新
raw/xml
文件目录。Android的/res
目录是只读的。所以您只能从中读取文件,不允许写回。(因为Android.apk文件具有只读权限)u无法修改android应用程序的xml文件夹中存储的xml。在设备上安装应用程序时,您需要将该文件复制到SD卡/内部存储
并对其进行修改。在这种情况下,您可以使用Dom解析器从SD卡/设备内部存储读取和写入xml文件。
简单的逻辑是,您不能在运行时在存储(原始、资产、布局等)内部创建文件,因此您可以通过授予“写入外部存储”权限在外部创建不同的文件。然后你可以读或写
这里有一个例子
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", "" );
}
我期待着那个。。。有没有其他方法可以在Android内部存储xml文件,并且仍然拥有写入权限,或者这是不可能的,我必须访问一些外部xml文件(例如通过网络)才能做到这一点?您可以将其存储在设备空间的应用程序内部存储中,路径/data/data//files
。在应用程序中,您可以使用getFilesDir()获取此路径代码>查看