Android生成xml文件

痞子三分冷 提交于 2020-03-23 20:15:35

  解析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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!