javaXML解析的俩种方法-----DOM-----SAX

来源:互联网 发布:网络写手水军做的坏事 编辑:程序博客网 时间:2024/05/22 14:22

第一种解析方法

----------------------------------------------------------------DOM解析方式----------------------------------------------------

public class DOMxml {List<Tv> list = new ArrayList<Tv>();public static void main(String[] args) throws Exception {// 创建一个DocumentBuilderFactory的对象DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();// 创建一个DocumentBuilder对象try {// 创建一个DocumentBuilder对象DocumentBuilder db = dbf.newDocumentBuilder();// 创建DocumentBuilder对象的parse方法加载xml文件Document document = db.parse("凤凰卫视.xml");// 获取所有Program节点的集合NodeList Programlist = document.getElementsByTagName("Program");// System.out.println(Programlist.getLength());// 遍历Tv tv = new Tv();for (int i = 0; i < Programlist.getLength(); i++) {Node node = Programlist.item(i);NodeList nodes = node.getChildNodes();for (int j = 0; j < nodes.getLength(); j++) {// 区分textnode以及element类型的nodeif (nodes.item(j).getNodeType() == Node.ELEMENT_NODE) {// Element child=(Element)nodes.item(j);// System.out.println(child.getTextContent());// 获取element的节点名Node node2 = nodes.item(j);// 获取节点名String nodeName = node2.getNodeName();System.out.print(nodeName + ":");// 获取节点值// String// nodeValue=node2.getFirstChild().getNodeValue();String nodeValue = node2.getTextContent();// tv.setPlayTime(nodeValue.substring(1));System.out.println(nodeValue);}}}} catch (Exception e) {e.printStackTrace();}/*DOMxml doMxml=new DOMxml();doMxml.load();*/}/*public  void load() throws DocumentException{Tv tv = new Tv();InputStream is = this.getClass().getResourceAsStream("/"+"凤凰卫视.xml");Document doc = new SAXReader().read(is);Element rootElement = doc.getRootElement();Element mentElement=(Element)rootElement.elementIterator("ProgramList").next();for (Iterator<Element> ment=mentElement.elementIterator("Program"); ment.hasNext();) { Element next = ment.next(); System.out.println(next); String playtime=next.attributeValue("playTime"); String name=next.attributeValue("name"); String path=next.attributeValue("path"); System.out.println(name); System.out.println(path); System.out.println(playtime); tv.setPlayTime(playtime); tv.setName(name); tv.setPath(path);}*/}

-------------------------------------------------------第二种SAX解析------------------------------------------------------------------

SAXParserHandler类

public class SAXParserHandler extends DefaultHandler {int count =0;String value=null;Tv tv=null;private ArrayList<Tv>list=new ArrayList<Tv>();/** * 用来解析xml元素 */@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {// 调用DefaultHandler的startElement方法super.startElement(uri, localName, qName, attributes);if (qName.equals("Program")) {// 获取属性值count++;System.out.println("-------------开始遍历"+count+"的内容--------------");int length = attributes.getLength();// 获取对应节点的属性值String value = attributes.getValue("");}else if(!qName.equals("Program")&&!qName.equals("ProgramList")&&!qName.equals("typeB")){System.out.print("节点名为:"+qName);}}/** * 用来标识解析开始 */@Overridepublic void startDocument() throws SAXException {super.startDocument();System.out.println("--------------SAX解析开始---------------");}/** * 解析结束 */@Overridepublic void endDocument() throws SAXException {// TODO Auto-generated method stubsuper.endDocument();System.out.println("----------SAX解析结束---------------");}/** * 调用DefaultHandler的endElement方法 */@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {// TODO Auto-generated method stubsuper.endElement(uri, localName, qName);if (qName.equals("Program")) {//list.add(tv);System.out.println("-------结束遍历"+count+"的内容---------");}/*else if (qName.equals("playTime")) { tv.setPlayTime(value);}else if (qName.equals("name")) { tv.setName(value);}else if (qName.equals("path")) { tv.setPath(value);}*/}/** * 获取节点值 */@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {// TODO Auto-generated method stubsuper.characters(ch, start, length);value = new String(ch, start, length);if (!value.trim().equals("")) {System.out.println("\t节点值为:"+value);}}public ArrayList<Tv> getList() {return list;}}
-------------------main方法--------------------------------

public static void main(String[] args) {// 获取一个SAXParserFactory实例SAXParserFactory spf = SAXParserFactory.newInstance();//通过factory获取SAXParser实例try {SAXParser sp=spf.newSAXParser();//创建SAXParserHandler对象SAXParserHandler sph=new SAXParserHandler();sp.parse("凤凰卫视.xml",sph);//System.out.println("共有"+sph.getList().size());} catch (Exception e) {e.printStackTrace();}}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 经营异常名录查不到怎么办移除 企业被列入经营税务异常名录怎么办 手机号被别人绑定了企业微信怎么办 刚出生一天的婴儿不肯吃奶怎么办 9个月孩子不好好吃奶怎么办 孩子2个月吃奶老是呛到怎么办 孩子4个月不好好吃奶怎么办? 3个月的孩子不吃奶肚子胀怎么办 刚出生的婴儿吃完奶打嗝怎么办 宝宝刚生下来一直睡觉不吃奶怎么办 刚生下来的婴儿不吃奶怎么办 刚生下来的小猫不吃奶怎么办 刚生的小羊羔不吃奶怎么办 刚出生的婴儿不会吸奶怎么办 生完小孩七十天妈妈咳嗽怎么办 带欣的名字三个字儿的怎么办 二十多岁的儿子沉迷游戏网络怎么办 为什么打开游戏网络却用不了怎么办 打来微信网页版显示证书错误怎么办 开了家定制家具店生意不好怎么办 宝宝起风疹怎么办要注意的问题 超市买的内裤西铁牌子没去掉怎么办 没申请生产许可证贴标了怎么办 淘宝没有品牌非要我写品牌怎么办没 意外怀孕明明一直用安全套的怎么办 找不到百度网盘的dns地址怎么办 小米众筹到了发货时间不发货怎么办 不知道电脑宽带连接账号密码怎么办 电脑如果宽带账号密码忘记了怎么办 xp电脑用户名和密码忘了怎么办 电脑的用户名和密码忘记了怎么办 电脑重置后需要用户名和密码怎么办 电脑登录用户名和密码忘记了怎么办 电脑登录用户名和密码忘了怎么办啊 微信无意中点了允许登录怎么办 qq号码登录微信无法验证怎么办 注册微信公众号邮箱激活不了怎么办 不是自己申请的qq号忘密码怎么办 联通宽带拨号账号密码忘记了怎么办 忘了路由器的用户名和密码怎么办 宽带连接用户名和密码忘了怎么办