解析xml文件的的文章很多,但是Android里生成xml文件的文章就很少了。偶然机会找到一篇相关发面的文章,就分享一下了:
用到的主要是XmlSerializer,利用它来写xml文件。
private static void XmlFileCreator(List<JokeBean> data){ File newxmlfile = new File(Environment.getExternalStorageDirectory()+"/new.xml"); try{ if(!newxmlfile.exists()) newxmlfile.createNewFile(); }catch(IOException e){ Log.e("IOException", "exception in createNewFile() method"); } //we have to bind the new file with a FileOutputStream FileOutputStream fileos = null; try{ fileos = new FileOutputStream(newxmlfile); }catch(FileNotFoundException e){ Log.e("FileNotFoundException", "can't create FileOutputStream"); } //we create a XmlSerializer in order to write xml data XmlSerializer serializer = Xml.newSerializer(); try { //we set the FileOutputStream as output for the serializer, using UTF-8 encoding serializer.setOutput(fileos, "UTF-8"); //Write <?xml declaration with encoding (if encoding not null) and standalone flag (if standalone not null) serializer.startDocument(null, Boolean.valueOf(true)); //set indentation option serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); //start a tag called "root" serializer.startTag(null, "jokes"); for(JokeBean joke:data){ serializer.startTag(null, "joke"); //i indent code just to have a view similar to xml-tree serializer.startTag(null, "id"); serializer.text(joke.getId()); serializer.endTag(null, "id"); serializer.startTag(null, "title"); serializer.text(joke.getTitle()); //set an attribute called "attribute" with a "value" for <child2> //serializer.attribute(null, "attribute", "value"); serializer.endTag(null, "title"); serializer.startTag(null, "text"); //write some text inside <text> serializer.text(joke.getText()); serializer.endTag(null, "text"); serializer.endTag(null, "joke"); } serializer.endTag(null, "jokes"); serializer.endDocument(); //write xml data into the FileOutputStream serializer.flush(); //finally we close the file stream fileos.close(); } catch (Exception e) { Log.e("Exception","error occurred while creating xml file"); } }
实际上还有一种笨方法,只不过我没有试:那就是直奔普通字符文本写入文件就可以解决这个问题。不过这样要稍微麻烦些。
参考文章:
http://www.anddev.org/write_a_simple_xml_file_in_the_sd_card_using_xmlserializer-t8350.html
来源:https://www.cnblogs.com/slider/archive/2012/02/15/2353032.html