- 浏览: 444170 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
supertangcugu:
文中有个错误,SoftReference是软引用,Strong ...
WeakReference与SoftReference -
somefuture:
我每次走到movie.draw(canvas,0, 0); ...
利用Movie播放GIF -
鞠文婷:
徐颖慧 写道为什么打不开啊?额 果然打不开了。。
50个Android开发人员必备UI效果源码[转载] -
徐颖慧:
为什么打不开啊?
50个Android开发人员必备UI效果源码[转载] -
李白625:
为什么打不开啊
50个Android开发人员必备UI效果源码[转载]
今天的项目里做了一个缓存文件 利用的就是xml
读都好说 其实写也很简单 机械化了一点 不过都是必要的
读都好说 其实写也很简单 机械化了一点 不过都是必要的
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStream; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import com.yolove.player.entity.AudioInfo; public class PlaylistSyncUtil { public static ArrayList<AudioInfo> list; public PlaylistSyncUtil(){ } public static void savetoLocal(ArrayList<AudioInfo> audiolist,String path){ //取得文件名 String name=path.substring(path.lastIndexOf("/")+1, path.lastIndexOf(".")); //得到xml序列化工具 XmlSerializer serializer=Xml.newSerializer(); //生成Stringwriter对象 StringWriter writer=new StringWriter(); if(audiolist.size()>0){ try { serializer.setOutput(writer); //XML文件头 serializer.startDocument("UTF-8", true); /* * 开始xml文件主体的构建 * xml的根root为playlist * 次级根为audioInfo 标识每一个单独的audioinfo对象 * 对象中的属性以<></>的格式进行存储 */ //<playlist> serializer.startTag("", "playlist"); for(int i=0;i<audiolist.size();i++){ AudioInfo info=audiolist.get(i); serializer.startTag("", "AudioInfo"); serializer.startTag("", "id"); serializer.text(info.getId()+""); serializer.endTag("", "id"); serializer.startTag("", "data"); serializer.text(info.getData()+""); serializer.endTag("", "data"); serializer.startTag("", "displayname"); serializer.text(info.getDisplayName()+""); serializer.endTag("", "displayname"); serializer.startTag("", "size"); serializer.text(info.getSize()+""); serializer.endTag("", "size"); serializer.startTag("", "dateAdded"); serializer.text(info.getDateAdded()+""); serializer.endTag("", "dateAdded"); serializer.startTag("", "dateModified"); serializer.text(info.getDateModified()+""); serializer.endTag("", "dateModified"); serializer.startTag("", "title"); serializer.text(info.getTitle()+""); serializer.endTag("", "title"); serializer.startTag("", "duration"); serializer.text(info.getDuration()+""); serializer.endTag("", "duration"); serializer.startTag("", "artistId"); serializer.text(info.getArtistId()+""); serializer.endTag("", "artistId"); serializer.startTag("", "albumId"); serializer.text(info.getAlbumId()+""); serializer.endTag("", "albumId"); serializer.startTag("", "year"); serializer.text(info.getYear()+""); serializer.endTag("", "year"); serializer.startTag("", "bookmark"); serializer.text(info.getBookMark()+""); serializer.endTag("", "bookmark"); serializer.startTag("", "lrcData"); serializer.text(info.getLrcData()+""); serializer.endTag("", "lrcData"); serializer.startTag("", "picData"); serializer.text(info.getPicData()+""); serializer.endTag("", "picData"); serializer.startTag("", "album"); serializer.text(info.getAlbum()+""); serializer.endTag("", "album"); serializer.startTag("", "artist"); serializer.text(info.getArtist()+""); serializer.endTag("", "artist"); serializer.startTag("", "lpDownOnce"); serializer.text(info.isLpDownOnce()+""); serializer.endTag("", "lpDownOnce"); serializer.startTag("", "uuid"); serializer.text(info.getUuid()+""); serializer.endTag("", "uuid"); serializer.startTag("", "type"); serializer.text(info.getType()+""); serializer.endTag("", "type"); serializer.startTag("", "smallpicurl"); serializer.text(info.getSmallpicurl()+""); serializer.endTag("", "smallpicurl"); serializer.startTag("", "bigpicurl"); serializer.text(info.getBigpicurl()+""); serializer.endTag("", "bigpicurl"); serializer.startTag("", "description"); serializer.text(info.getDescription()+""); serializer.endTag("", "description"); serializer.startTag("", "isplaying"); serializer.text(info.isPlaying()+""); serializer.endTag("", "isplaying"); serializer.startTag("", "isselected"); serializer.text(info.isSelected()+""); serializer.endTag("", "isselected"); serializer.endTag("", "AudioInfo"); } serializer.endTag("", "playlist"); serializer.endDocument(); }catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //结果字符串 // writer.toString(); boolean flag = true; BufferedReader bufferedReader = null; BufferedWriter bufferedWriter = null; try { File distFile = new File(path); if(distFile.exists()){ distFile.delete(); } bufferedReader = new BufferedReader(new StringReader(writer.toString())); bufferedWriter = new BufferedWriter(new FileWriter(distFile)); char buf[] = new char[1024]; //字符缓冲区 int len; while ((len = bufferedReader.read(buf)) != -1) { bufferedWriter.write(buf, 0, len); } bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); flag = false; } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } } } public static ArrayList<AudioInfo> getAudioListFromLocal(String path){ SAXParserFactory sax=SAXParserFactory.newInstance(); PlaylistXMLHandler playlistHandler=new PlaylistXMLHandler(); try { SAXParser parser=sax.newSAXParser(); XMLReader reader=parser.getXMLReader(); reader.setContentHandler(playlistHandler); reader.parse(new InputSource(new FileInputStream(new File(path)))); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } static class PlaylistXMLHandler extends DefaultHandler { String tag; AudioInfo info; StringBuilder builder=new StringBuilder(); @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub if(!(tag.equals(""))){ builder.append(ch,start,length); } super.characters(ch, start, length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); if(tag.equals("uuid")){ info.setUuid(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("artist")){ info.setArtist(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("id")){ info.setId(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("size")){ info.setSize(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("bookmark")){ info.setBookMark(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } // else if(tag.equals("year")){ info.setYear(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("albumId")){ info.setAlbumId(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("artistId")){ info.setArtistId(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("dateAdded")){ info.setDateAdded(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("dateModified")){ info.setDateModified(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("title")){ info.setTitle(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("lpDownOnce")){ info.setLpDownOnce((builder.toString().replaceAll("\n", "").replaceAll("\\s", "").equals("true")?true:false)); builder.setLength(0); } else if(tag.equals("isplaying")){ info.setPlaying((builder.toString().replaceAll("\n", "").replaceAll("\\s", "").equals("true")?true:false)); builder.setLength(0); } else if(tag.equals("isselected")){ info.setSelected((builder.toString().replaceAll("\n", "").replaceAll("\\s", "").equals("true")?true:false)); builder.setLength(0); } else if(tag.equals("artist")){ info.setArtist(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("songname")){ info.setTitle(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("album")){ info.setAlbum(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("duration")){ info.setDuration(Integer.parseInt(builder.toString().replaceAll("\n", "").replaceAll("\\s", ""))); builder.setLength(0); } else if(tag.equals("type")){ info.setType(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("data")){ info.setData(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); //System.out.println("url--->"+builder); builder.setLength(0); } else if(tag.equals("smallpicurl")){ info.setSmallpicurl(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); //System.out.println("smallpicurl--->"+builder); builder.setLength(0); } else if(tag.equals("bigpicurl")){ info.setBigpicurl(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); //System.out.println("bigpicurl--->"+builder); builder.setLength(0); } else if(tag.equals("lrcData")){ info.setLrcData(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("picData")){ info.setPicData(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("description")){ info.setDescription(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } else if(tag.equals("displayname")){ info.setDisplayName(builder.toString().replaceAll("\n", "").replaceAll("\\s", "")); builder.setLength(0); } tag=""; if(localName.equals("AudioInfo")){ list.add(info); } } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); tag=localName; if(tag.equals("playlist")){ if(list==null) list=new ArrayList<AudioInfo>(); else{ list.clear(); } }else if(tag.equals("AudioInfo")){ info=new AudioInfo(); } } } }
发表评论
-
Android OpenGL库函数列表
2014-11-26 10:44 1204Android OpenGL库函数列表 OpenGl核 ... -
FFmpeg Android部分的编译
2014-06-19 17:09 1188编译的是最新版2.2.3。再说编译环境 操作系统 ubun ... -
AVPacket与AVFrame的关系
2014-06-19 16:19 9967最近在做ffmpeg相关的项目,满眼的AVPacket和AV ... -
WebView 自适应全屏
2013-10-30 11:29 5228网上有通行的3中方法 写道 第一种: settings ... -
NDK调试
2013-10-24 16:41 5834大体根据官方攻略 http://tools.android ... -
adb logcat 打印输出
2013-08-06 11:43 3115深圳公司的同事在测试的时候遇到一些bug 我这边没办法重 ... -
android上加载大图片需要注意的问题
2013-07-16 21:47 9391尽量不要使用setImageBitmap或setImageR ... -
XMPP下的注册与登录
2013-06-24 23:43 6696前面讲了本地如何搭建XMPP环境 其实我不懂 也没认真的好好 ... -
XMPP 环境快速搭建
2013-06-24 22:31 1222这年头微信火 于是好多公司都要跟风 搭建环境其实挺简单 ... -
利用Movie播放GIF
2013-05-09 16:52 5094public class ViewContent ex ... -
ListView分隔线的显示
2013-04-08 16:21 1539项目中需要在listview中添加footview 出现了 ... -
结合popwindow与gridview的一例
2013-03-15 16:04 1379项目中需要实现一个gridview 点击某项弹出一个popu ... -
[转]Android中Matrix的pre post set方法理解
2013-03-08 15:03 1229虽说以前学习过线性代数和图形学原理,但是在实际中碰到matr ... -
50个Android开发人员必备UI效果源码[转载]
2013-03-08 09:29 44534Android 仿微信之主页面实现篇Android 仿微信之界 ... -
对View DrawingCache的理解
2013-02-18 19:37 1079View组件显示的内容可以通过cache机制保存为bitm ... -
Fragment使用方法一则
2013-02-18 17:28 1533之前在项目里也用到了fragment,作为横向滑动的组件显示 ... -
AVD ROOT
2012-12-04 11:47 3187启动一个模拟器,开 ... -
onTouchEvent 、onInterceptTouchEvent的顺序~
2012-10-26 10:29 1170转自:http://yxwww.iteye.com/blog/ ... -
ListView滑动获取分页 并异步加载每一项的图片
2012-09-26 10:40 4488项目有一个需求就是从服务器获取一个分页数据,数据按json数组 ... -
解析apk文件的图标等内容
2012-09-05 15:56 3260import java.lang.reflect. ...
相关推荐
使用SAX方式解析XML SAX 是读取和操作 XML 数据的更快速、更轻量的方 法。SAX 允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及 DOM 所必需的开销和概念跳跃。 SAX API是一个基于事件...
SAX解析XML文件以及对取出的id放进数组进行冒泡排序(从大到小排序和从小到大排序)
Android SDK只支持采用SAX技术读取XML,SAX采用顺序读取的方式来处理XML文档。这就要求在每读取XML文档的某个节点时会触发相应的事件来处理这个节点。下面基于一个实例讲述SAX的使用
java学习笔记——使用DOM解析XML和使用SAX解析XML
sax解析xml本地读取xml,希望对你有用
教程说明见 http://www.linuxidc.com/Linux/2012-01/51438.htm
java中经常会遇到解析xml的工作,这个是必须的,这里贡献一个sax解析xml的方法,这里面是一个demo,希望对大家有用
包中包含art.xml以及解析这个文件的DomDemo.java和SaxDemo.java
SAX对xml文档进行解析
qt使用DOM和SAX两种方式读写XML文件,代码工程demo,亲测可用
总结DOM、SAX、JDOM、DOM4J读写xml文档的多种方法。
学习android的资料很多,这是学习一些视频之后进行的总结,现在共享出来。希望对大家有帮助。有文档中有附件,是例子!!!!!!!!!!!!!!
使用java语言对XML文档进行解析的示例,包括DOM,SAX方式,并包括使用jdom和jom4j框架进行XML解析或生成XML文档
本文实例讲述了Python3基于sax解析xml操作。分享给大家供大家参考,具体如下: python使用SAX解析xml SAX是一种基于事件驱动的...在python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sax.handler中的
利用JSP直接读写XML文件,分别用DOM解析器和SAX解析器加以实现,非常适合初学者入门,作为一个了解jsp与XML的台阶
介绍了如何通过java来读写xml的方法,其中介绍了几种方法,如:DOM、SAX、JDOM、JAXB、dom4j.
利用SAX解析XML文档,实现对南工自习室的解析,解决自习室难找的问题
本程序是利用SAX技术实现XML文件的解析。SAX是Simple API for XML的简称,在Android里面提供对XML文件的解析接口方法。
转《利用XMLBean轻轻松松读写XML》 ... 所以如果有一个类似的工具能够实现将对XML的读写转成对JavaBean的操作,将会简化XML的读写,即使对XML不熟悉的开发人员也能方便地读写XML. 这个工具就是XMLBean.
这个文件夹里边的代码是三种方式对xml进行解析,其中dom,dom4j,对小米进行了增删改查,sax对xml进行了解析