使用DOM、DOM4j、SAX三种方式解析XML
来源:互联网 发布:淘宝回收旧丝袜 编辑:程序博客网 时间:2024/06/07 22:50
一、DOM解析
DOM:Document Object Model 文档对象模型
//实例化document工厂DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();//实例化document构造器DocumentBuilder db=dbf.newDocumentBuilder();//通过构造器读取数据(解析数据)Document document=db.parse(new File("students.xml"));//拿到<students>根节点Element element=document.getDocumentElement();//拿到<student>下的所有节点NodeList nodeList=element.getElementsByTagName("student");for (int i = 0; i <nodeList.getLength(); i++) {//遍历所有的子节点,得到某子节点Element student=(Element) nodeList.item(i);//得到属性的值打印System.out.println(student.getAttribute("sid")+" "+student.getAttribute("sname"));NodeList nodeList2=student.getChildNodes();for (int j = 0; j <nodeList2.getLength(); j++) {Node node=nodeList2.item(j);//判断是否是标签if(node.getNodeType()==node.ELEMENT_NODE){Element element2=(Element) nodeList2.item(j);if("sage".equals(element2.getNodeName())){//得到标签的内容打印System.out.println(element2.getTextContent());}else if("ssex".equals(element2.getNodeName())){System.out.println(element2.getTextContent());}}}}
二、Dom4j解析
//实例化SAX读取器SAXReader saxReader=new SAXReader();//读取Document document=saxReader.read(new File("students.xml"));//拿到根节点Element element=document.getRootElement();//拿到student所有的节点List<Element> list=element.elements("student");//通过集合去遍历得到的标签和属性值for (Element element2 : list) {System.out.println(element2.attributeValue("sid")+element2.attributeValue("sname")+element2.element("sage").getTextTrim());}
三、SAX解析
a) 具体的英文名是:Simplement API for XML
//实例化SAX解析器工厂SAXParserFactory saf=SAXParserFactory.newInstance();//实例化SAX构造器SAXParser sap=saf.newSAXParser();//开始解析sap.parse(new File("students.xml"), new DefaultHandler(){//暂时定义一个名字为nullString name=null;@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if("sage".equals(name)){System.out.println(new String(ch, start, length));}}@Overridepublic void endElement(String uri, String localName,String qName) throws SAXException {name=null;}@Overridepublic void startElement(String uri, String localName,String qName, Attributes attributes)throws SAXException {//拿到跟标签下的子标签name=qName;if("student".equals(qName)){System.out.println(attributes.getValue(0)+" "+attributes.getValue(1));}}});
四、DOM和SAX解析的区别
a) DOM解析占用内存比较大,但是方便对XML进行CRUD
b) SAX有点占用内存小,解析速度快,缺点只适合做文档读取,不适合做CRUD.
阅读全文
0 0
- 使用DOM、DOM4j、SAX三种方式解析XML
- 解析xml文件的三种方式(sax ,dom ,dom4j)
- XML解析的三种方式(dom,sax,dom4j)
- android解析XML总结(SAX、Pull、Dom三种方式)附带DOM4J、JDOM
- android解析XML总结(SAX、Pull、Dom三种方式)附带DOM4J、JDOM
- DOM,SAX,JDOM,DOM4J 四种方式解析xml
- DOM,SAX,JDOM,DOM4J 四种方式解析xml
- 解析xml的四种方式:DOM JDOM DOM4J SAX
- xml---4种解析方式dom,sax,jdom,dom4j
- XML解析三种方式JDom、Sax、Dom4j
- 解析XML(三种解析方式DOM,SAX,PULL)
- XML解析(DOM,SAX,dom4j)
- XML 解析(dom/sax, dom4j)
- xml的解析方式——dom/sax、jdom、dom4j
- XML解析方式之DOM、SAX、JDOM、DOM4J
- XML解析方式之DOM、SAX、JDOM、DOM4J
- Android解析XML三种方式(PULL、SAX、DOM)
- Android解析XML三种方式(PULL、SAX、DOM)
- USCAO-Section1.1 Broken Necklace(DP版)
- Zookeeper教程(一):快速开始以及结合java实现分布式Barrier和Queue
- 线程辅助类(二)--CountDownLatch
- HttpClient通过Post方式发送Json数据
- kotlin学习笔记之环境配置
- 使用DOM、DOM4j、SAX三种方式解析XML
- 大型网站技术架构(七)--网站的可扩展性架构
- 浅谈STL list<T>链表容器和迭代器的使用C++实现
- Linux 常用命令
- 大背包问题(挑战程序设计竞赛)
- 最大连续子序列和的几种解法
- git基本操作(一)
- C语言中如何在工程中单独运行某个源文件
- CSS制作一个商品分类列表,边框是圆角弧度