XML解析方式小谈
来源:互联网 发布:金蝶erp软件介绍 编辑:程序博客网 时间:2024/06/05 11:21
DOM解析:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。
//创建需要解析的xml文档对象 File xmlfile=new File("src/com/hts/dom/xml/Dom.xml"); //声明DocumentBuilder对象,抽象类,不能实例化 DocumentBuilder builder=null; //通过单例模式创建DocumentBuilderFactory对象 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); try { //实例化builder builder=builderFactory.newDocumentBuilder(); //解析xml文档 Document document=builder.parse(xmlfile); //获取根节点对象 Element element=document.getDocumentElement(); System.out.println("根元素:"+element.getNodeName()); //获得根节点下的子节点 NodeList nodeList=element.getChildNodes(); //遍历 for (int i = 0; i < nodeList.getLength(); i++) { //获取每一个节点 Node node=nodeList.item(i); if("page-one".equals(node.getNodeName())){ //打印元素属性 System.out.println(node.getAttributes().getNamedItem("test").getNodeValue()); //输出节点内容 System.out.println(node.getTextContent()); } /* */ } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }
步骤
- 创建Document对象
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();//获取factoryDocumentBuilder builder=builderFactory.newDocumentBuilder();//获取bulider对象Document document=builder.parse(xmlfile);//创建xml对象
- 使用Document中的方法对xml内容进行处理,下面列举几种常用方法
SAX解析:基于事件响应模型进行解析XML,解析时,触发一系列事件。(不能修改数据)
// 创建需要解析的xml文档对象 File xmlfile = new File("src/com/hts/dom/xml/Dom.xml"); //用单例模式创建SAXParserFactory对象 SAXParserFactory parserFactory=SAXParserFactory.newInstance(); try { //创建SAXParser对象 SAXParser parser=parserFactory.newSAXParser(); //解析文件,定义解析时的事件处理 parser.parse(xmlfile,new SaxHandler()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
步骤
- 解析XML文件
SAXParserFactory parserFactory=SAXParserFactory.newInstance();//获取factorySAXParser parser=parserFactory.newSAXParser();//获取parserparser.parse(xmlfile,new SaxHandler());//开始解析
- SAX解析是事件驱动型的,还需要些一个事件的监听器对象
package com.hts.sax.xml;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class SaxHandler extends DefaultHandler { private String content; /* *事件发生时元素中的字符 * */ @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub content = new String(ch, start, length); } //解析到元素的结束标签触发 @Override public void endElement(String uri, String localName, String qName) throws SAXException { if ("page-one".equals(qName)) { System.out.println(content); } } //解析到元素的开始标签时触发 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub if ("page-one".equals(qName)) { System.out.println(attributes.getValue("test")); } }}
DOM和SAX解析方式的优劣
DOM将数据存储在内存中,而SAX不存储数据。
- 如果必须对数据进行更改,并且作为 XML 将它输出,则在大多数情况下,使用 DOM。
- 对于大文件,SAX 是更好的选择。
- 如果实际上只使用一小部分数据,则使用 SAX 将数据抽取到应用程序中,这种方法更好些。
- 通常,SAX 实现比 DOM 实现快。
0 0
- XML解析方式小谈
- 【XML】XML解析方式
- 【XML】XML解析方式
- xml-xml解析方式
- QXmlStreamReader、QDomDocument两种方式解析XML的小示例
- xml解析方式
- XML解析方式比较
- XML解析方式
- 解析xml的方式
- XML 解析方式
- dom方式解析xml
- XML解析方式汇总
- xml解析方式
- xml解析多种方式
- Pull解析Xml方式
- DOM方式解析XML
- xml解析方式
- XML解析方式
- 【BZOJ 2141】排队【分块+Treap】
- 【模板】【数论】扩展欧几里得算法
- mysql之表复制
- iOS获取网络状态
- 蚂蚁分类信息系统 5.8 网上下载的免费版MYMPS蚂蚁分类信息系统 v5.8 GBK 插件安装后无法正常使用
- XML解析方式小谈
- C/C++函数参数为何是从右到左?
- Spring Bean的作用域测试
- spring:ClassPathResource读取applicationContext.xml,如果加属性编辑器失败
- 大数据分析的技术栈(五)-Impala
- desc 获取数据表结构
- 使用Android4.4新增新媒体功能中的音量增强器LoudnessEnhancer实现仿酷狗音乐一键强音功能
- java集合——数组、List和ArrayList、LinkedList的区别
- java连接oracle数据库