Android Java 如何读写XML文件
2015-03-23 17:58
417 查看
使用 XmlPullParserFactory 构建XmlSerializer,然后对XML文件进行写是相当容易的,基本的步骤详见下面代码:
读取XML文件同样要用到XmlPullParserFactory,用其构建XmlPullParser来解析XML文件,示例如下:
package com.test.mytest; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; import android.content.Context; import android.os.Environment; public class MyTestClass2 { private Writer mWriter; private XmlSerializer mTestSuiteSerializer; private static final String XML_FILE = "log.xml"; public void initialize(Context context) { try { String filepath = getTargetDir(context); File fileRobo = new File(filepath); if (!fileRobo.exists()) { fileRobo.mkdir(); } File resultFile = new File(filepath, XML_FILE); startOutput(new FileWriter(resultFile)); } catch (IOException e) { throw new RuntimeException(e); } } /** * Set the XML file start tag. */ private void startOutput(Writer writer) { try { mWriter = writer; mTestSuiteSerializer = newSerializer(mWriter); mTestSuiteSerializer.startDocument(null, null); mTestSuiteSerializer.startTag(null, "Tag1"); } catch (Exception e) { throw new RuntimeException(e); } } /** * Write content to the XML file. * E.g. * <?xml version='1.0' ?> * <Tag1> * <MessageTag messageType="xxxx">message</MessageTag> * </Tag1> * */ public void startWrite(String messageType, String message) throws IOException { mTestSuiteSerializer.startTag(null, "MessageTag"); mTestSuiteSerializer.attribute(null, "messageType", messageType); mTestSuiteSerializer.text(message); mTestSuiteSerializer.endTag(null, "MessageTag"); } /** * End write content to the XML file. */ public void endWrite() { try { mTestSuiteSerializer.endTag(null, "Tag1"); mTestSuiteSerializer.endDocument(); mTestSuiteSerializer.flush(); mWriter.flush(); mWriter.close(); } catch (IOException e) { throw new RuntimeException(e); } } /** * Create the XML serializer for writing */ private XmlSerializer newSerializer(Writer writer) { try { XmlPullParserFactory pf = XmlPullParserFactory.newInstance(); XmlSerializer serializer = pf.newSerializer(); serializer.setOutput(writer); return serializer; } catch (Exception e) { throw new RuntimeException(e); } } /** * Judge if SD card exists */ private boolean isSDCardAvaliable(){ return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } /** * Get the file directory */ private String getTargetDir(Context context){ String packageName = "/" + context.getPackageName(); String filepath = context.getFilesDir().getPath() + packageName; if (isSDCardAvaliable()) { filepath = Environment.getExternalStorageDirectory().getAbsolutePath()+ packageName; } return filepath; } }
读取XML文件同样要用到XmlPullParserFactory,用其构建XmlPullParser来解析XML文件,示例如下:
package com.test.mytest; import java.io.InputStream; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import android.content.Context; import android.util.Log; public class MyTestClass3 { public void startXmlPullParser (Context context) { try { // Open the XML file as InputStream InputStream InputStream = context.getClass().getClassLoader().getResourceAsStream("log.xml"); // Get a XmlPullParser object XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser(); // Set the file encoded type parser.setInput(InputStream, "UTF-8"); // Read the file flag int fileFlag = parser.getEventType(); while(fileFlag != XmlPullParser.END_DOCUMENT){ String nodeName = parser.getName(); switch (fileFlag) { case XmlPullParser.START_TAG: if(nodeName.equals("TAG1")){ Log.i("startXmlPullParser", "TAG1 = " + parser.nextText()); } if(nodeName.equals("TAG2")){ Log.i("startXmlPullParser", "TAG2 = " + parser.nextText()); } if(nodeName.equals("TAG3")){ Log.i("startXmlPullParser", "TAG3 = " + parser.nextText()); } break; case XmlPullParser.END_TAG: default: break; } // Get the next event type fileFlag = parser.next(); } } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- android开发中,xml如何与.java文件关联起来的呢?
- Android Java 如何读写CSV格式文件
- 如何把android中布局文件(.xml)与相关的类(.java)进行关联?
- 如何把android中布局文件(.xml)与相关的类(.java)进行关联?
- Android: 如何手工生成R.java文件?
- android的布局xml文件如何添加注释?
- asp.net如何读写xml文件
- java如何读写txt文件
- Unity3d如何读写XML文件
- java 如何使用缓冲区对文件进行读写操作
- Android 开发中 如何将xml文件封装成对象,存放到数组中?
- Android(java)学习笔记185:xml文件生成
- Java 如何对文件进行多个Object对象流的读写操作
- Android中如何查看在res中存放的drawable文件对应的JAVA类型是什么呢
- Android程序的时候就要设计到编写xml布局文件,这里就教你如何设置xml的自动补全。
- 备忘:java中如何从文件中读写大量…
- java项目打包后如何读写项目中的文件
- Java中的的XML文件读写
- 【转】Android中xml文件读写
- Android——Android studio项目中如何查看R.java文件(转)