java解析xml文件方法
发布日期:2022-02-24 11:36:03
浏览次数:9
分类:技术文章
本文共 5223 字,大约阅读时间需要 17 分钟。
对xml数据的解析,在网络程序中经常会用到。在这里介绍SAX方法来处理xml文档。SAX是基于事件的,由回调机制实现。 在这里需要解析的文件mp3.xml首先,需定义一个Mp3Info类,用于存放解析后的数据。Mp3Info.java0001 Fayray-I Wanna Be Free.mp3 4867102 Fayray-I Wanna Be Free.lrc 1453 0002 teens-fire_fly.mp3 2999636 teens-fire_fly.lrc 1986
import java.io.Serializable; public class Mp3Info implements Serializable{ private static final long serialVersionUID = 1L; private String id; private String mp3Name; private String mp3Size; private String lrcName; private String lrcSize; public Mp3Info() { super(); } public Mp3Info(String id, String mp3Name, String mp3Size, String lrcName, String lrcSize) { super(); this.id = id; this.mp3Name = mp3Name; this.mp3Size = mp3Size; this.lrcName = lrcName; this.lrcSize = lrcSize; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getMp3Name() { return mp3Name; } public void setMp3Name(String mp3Name) { this.mp3Name = mp3Name; } public String getMp3Size() { return mp3Size; } public void setMp3Size(String mp3Size) { this.mp3Size = mp3Size; } public String getLrcName() { return lrcName; } public void setLrcName(String lrcName) { this.lrcName = lrcName; } public String getLrcSize() { return lrcSize; } public void setLrcSize(String lrcSize) { this.lrcSize = lrcSize; } @Override public String toString() { return "Mp3Info [id=" + id + ", mp3Name=" + mp3Name + ", mp3Size=" + mp3Size + ", lrcName=" + lrcName + ", lrcSize=" + lrcSize + "]"; } }定义一个用于解析xml文档的函数,函数名Parse(String xmlStr)。解析后的据存放在一个链表中。
private List在Prase()函数中,出现了一个类,mp3ListContentHandler,因此还需要对它进行定义。解析的关键部分都在此类中。parse(String xmlStr){ List infos = new ArrayList (); SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); SAXParser parser = null; //saxParserFactory.setNamespaceAware(true); //saxParserFactory.setValidating(true); try { parser = saxParserFactory.newSAXParser(); //用于封装JDK提供的解析器 } catch(SAXException e) { e.printStackTrace(System.err); System.exit(1); } catch(ParserConfigurationException e) { e.printStackTrace(System.err); System.exit(1); } System.out.println("\nStarting parse ..."); Mp3ListContentHandler mp3ListContentHandler = new Mp3ListContentHandler(infos); try{ parser.parse(new InputSource(new StringReader(xmlStr)), mp3ListContentHandler); for(Iterator iterator = infos.iterator(); iterator.hasNext();){ Mp3Info mp3Info = (Mp3Info)iterator.next(); System.out.println(mp3Info); } }catch(IOException e) { //System.out.println("--------------->2"); e.printStackTrace(System.err); }catch(SAXException e) { //System.out.println("--------------->3"); e.printStackTrace(System.err); } return infos; }
import java.util.List; import jia.model.Mp3Info; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class Mp3ListContentHandler extends DefaultHandler{ private List这些代码是在android视频教学中用到的,我做了一些修改。感谢作者的的奉献。如需要解析其他的xml文件,只需按照上面的格式,进行一些修改即可。infos = null; private Mp3Info mp3Info = null; private String tagName = null; //Constructor public Mp3ListContentHandler(List infos) { this.infos = infos; } public List getInfos() { return infos; } public void setInfos(List infos) { this.infos = infos; } @Override public void characters(char[] ch, int start, int length) throws SAXException { String temp = new String(ch, start, length); //System.out.println("Characters: " + temp); if (tagName.equals("id")) { mp3Info.setId(temp); } else if (tagName.equals("mp3.name")) { mp3Info.setMp3Name(temp); } else if (tagName.equals("mp3.size")) { mp3Info.setMp3Size(temp); } else if (tagName.equals("lrc.name")) { mp3Info.setLrcName(temp); } else if (tagName.equals("lrc.size")) { mp3Info.setLrcSize(temp); } } @Override public void endDocument() throws SAXException { //System.out.println("End document"); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equals("resource")) { infos.add(mp3Info); } tagName = ""; //System.out.println("End element: local name: " + localName + " qname: " // + qName + " uri: "+uri); } @Override public void startDocument() throws SAXException { System.out.println("Start document:"); } @Override public void startElement(String uri, String localName, String qName, Attributes attr) throws SAXException { //System.out.println("Start element: local name: " + localName + " qname: " // + qName + " uri: "+uri); int attrCount = attr.getLength(); if(attrCount>0) { System.out.println("Attributes:"); for(int i = 0 ; i
转载地址:https://blog.csdn.net/iteye_17609/article/details/82008181 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年03月29日 14时27分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
带团队很简单,管理就是十六字!(管理者必看)
2019-04-26
写作技巧~100段作文排比句(61-80段),考试一定用得上,赶紧收藏!
2019-04-26
判别式模型和生成式模型
2019-04-26
SVM和LR的适用情况,SVM中核函数的作用。
2019-04-26
以下机器学习中,在数据预处理时,不需要考虑归一化处理的是
2019-04-26
在统计模式识分类问题中,当先验概率未知时,可以使用N-P判决和最小最大损失准则
2019-04-26
聚类的定义和2个基本问题
2019-04-26
聚类算法的种类介绍
2019-04-26
隐马模型(HMM)
2019-04-26
转载CSDN博客步骤
2019-04-26
向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)
2019-04-26
对偶问题和原问题的关系
2019-04-26
线性分类器的三种最优准则
2019-04-26
常用激活函数总结
2019-04-26
支持向量机(SVM)
2019-04-26
常用来划分测试集和训练集的划分方法
2019-04-26
Python 中__new__()和__init__()的区别
2019-04-26
平面点坐标旋转公式
2019-04-26
二叉树的问题汇总
2019-04-26
排序算法的时间复杂度汇总
2019-04-26