项目代码见附件
package com.example.dimensadapterutil; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.xmlpull.v1.XmlSerializer; import android.app.Activity; import android.content.res.XmlResourceParser; import android.os.Bundle; import android.os.Environment; import android.util.Xml; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button btn_read, btn_write; private List<Map<String, String>> listData = new ArrayList<Map<String, String>>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_read = (Button)findViewById(R.id.btn_read); btn_read.setOnClickListener(new Btn_ReadClick()); btn_write = (Button)findViewById(R.id.btn_write); btn_write.setOnClickListener(new Btn_WriteClick()); } private class Btn_ReadClick implements OnClickListener{ @Override public void onClick(View v) { XmlResourceParser xrp = getResources().getXml(R.xml.dimens); try { while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT){ if(xrp.getEventType() == XmlResourceParser.START_TAG){ Map<String, String> map = new HashMap<String, String>(); String tagName = xrp.getName(); if(tagName.equals("dimen")){ String name = xrp.getAttributeValue(null, "name"); map.put("name", name); String value = xrp.nextText(); map.put("value", value); } listData.add(map); } xrp.next(); } } catch (Exception e) { e.printStackTrace(); } } } private class Btn_WriteClick implements OnClickListener{ @Override public void onClick(View v) { if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File filepath = new File(Environment.getExternalStorageDirectory()+"/dimen.xml"); try { writeData(filepath); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } private void writeData(File file) throws IOException{ if(!file.exists()){ file.createNewFile(); } FileOutputStream fos = new FileOutputStream(file); XmlSerializer serializer = Xml.newSerializer(); try { serializer.setOutput(fos, "UTF-8"); serializer.startDocument("UTF-8", true); serializer.startTag(null, "resources"); if(listData.size() > 1){ for(int i = 0; i < listData.size(); i++){ if(!listData.get(i).isEmpty()){ serializer.startTag(null, "dimen"); serializer.attribute(null, "name", listData.get(i).get("name")); serializer.text(listData.get(i).get("value")); serializer.endTag(null, "dimen"); } } serializer.endTag(null, "resources"); serializer.endDocument(); } } catch (Exception e) { e.printStackTrace(); } finally{ fos.flush(); } } } }