java sax xml文件解析_java解析xml文件-DOM/SAX
java解析xml文件的两种方式
1:DOM
原理:把整个文档加载到内存,转化成dom树,之后应用程序可以随机的访问dom树的任何数据,灵活 快,但消耗内存
一个简单的xml
使用java解析
//builder工厂
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();try{//builder
DocumentBuilder builder =factory.newDocumentBuilder();//解析xml文档
Document doc = builder.parse("src/xmls/demo.xml");//根据标签名得到元素
NodeList list = doc.getElementsByTagName("student");//因为只有一个student 所以获取第一个//Node node=list.item(0);//element继承自node
Element student = (Element) list.item(0);//第一个元素//姓名
Element name = (Element) student.getElementsByTagName("姓名").item(0);
String nameValue=name.getFirstChild().getNodeValue();//年龄
Element age = (Element) student.getElementsByTagName("age").item(0);
String ageValue=age.getFirstChild().getNodeValue();
System.out.println(ageValue);//性别
Element sex = (Element) student.getElementsByTagName("sex").item(0);
String sexValue=sex.getFirstChild().getNodeValue();
String attib= sex.getAttribute("id");
System.out.println(sexValue);
System.out.println(attib);
}catch(Exception e) {
e.printStackTrace();
}
节点 属性 文本 都可以拿到了,复杂的xml也是使用这么几个方法。
2. sax
只能read 不能edit 相对于DOM方式来说 不会占用太多的内存, 对xml文档进行顺序扫描,有事件发生
输出结果:
public class SaxDemo extends DefaultHandler {
@Override
public void startDocument() throws SAXException {
System.out.println("文档开始。。。");
}
@Override
public void endDocument() throws SAXException {
System.out.println("文档结束。。。");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("元素开始。。"+qName);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("元素结束。。。"+qName);
}
/**
* 文本结点
* @param ch
* @param start
* @param length
* @throws SAXException
*/
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.println(new String(ch,start,length));
}
public static void main(String[] args) {
SAXParserFactory factory =SAXParserFactory.newInstance();
SAXParser parser= null;
try {
parser = factory.newSAXParser();
try {
parser.parse("src/xmls/demo.xml",new SaxDemo());
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
}
java sax xml文件解析_java解析xml文件-DOM/SAX相关推荐
- java怎么xml文件解析_Java对Xml文件解析
JAVA 解析 XML 通常有两种方式,DOM 和 SAX. DOM 虽然是 W3C 的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一 ...
- java解析xml文档_Java解析xml文件
读xml文件: xml文件内容: Java Eclipse Swift Xcode C# Visual Studio 代码: package XMLParse; import java.io.File ...
- java对xml文件的解析_Java对XML文件的解析
XML简介 围绕XML涉及到四方面的技术: 1.数据定义Schema.DTD 2.数据解析DOM.SAX两种解析模型 3.样式风格XSTL,使用XSTL可以将XML文件中存放的内容按照指定的样式显示为 ...
- java解析xml生成表格_JAVA读取XML文件并解析 以及 JAVA生成文本文件输出
废话不多说,直接上代码及说明吧! package Dao; import java.io.File; import java.util.ArrayList; import java.util.List ...
- java sax解析_Java 解析xml 之 SAX解析
SAX是什么 SAX是一种快速读写XML数据的方式. 局限 1.SAX分析器在解析xml文档时,触发了一系列事件,因为事件本身是有时序性的.因此SAX一旦经过了某个元素,没有办法返回再去访问. 2.S ...
- java xml解析_Java解析XML(4种方法)
xml文件 <?xml version="1.0" encoding="utf-8" ?><class><student>& ...
- 安卓XML解析的几种方式(DOM,SAX,PULL..)
在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull) ...
- java xml特殊字符转义_Java中将xml文件转化为json遇到特殊字符会报错!
前言: 我们在项目开发中,有时候调用别人提供的接口,接收到的数据是xml,这时候为了方便后续开发中的使用,需要解析xml并把数据转化成json,今天这篇文章就讲解下如何把xml转化成json,并在这个 ...
- java xml读取方法_Java读取XML文件的方法
Java读取XML文件的方法 发布时间:2020-08-19 14:39:08 来源:亿速云 阅读:63 作者:小新 这篇文章主要介绍了Java读取XML文件的方法,具有一定借鉴价值,需要的朋友可以参 ...
- java json 解析_Java解析JSON的四种方式
一.什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于阅读和编写,同时也易于解析和 ...
最新文章
- linux wc 命令简介
- iOS 解决1。返回时的黑边问题、2。controller的抖动问题
- 代码重构阅读心得[转]
- java基础提升篇:深入分析Java的序列化与反序列化
- [云炬python3玩转机器学习笔记] 2-4批量学习、咋西安学习、参数学习和非参数学习
- Python学习——02-Python基础——【9-面向对象进阶】——isinstance(obj,cls)、反射等...
- css链接,列表,表格
- 怎样分析 JAVA 的 Thread Dumps
- controller 中@autowired 报错_Spring中常用注解
- Mac可读可写remount硬盘
- intouch的报警怎么发到微信上
- 毕啸南专栏 | 对话阿里王坚:数据价值是新大陆,新技术将重构互联网
- 学习python的微信公众号_Python学习一:微信公众号验证
- Postman代理设置
- Linux C语言编译警告:control reaches end of non-void function
- Excel 2010 VBA 入门 064 按照关键字批量创建超链接
- python使用fpdf创建pdf:写入hello world、嵌入图片
- 做一个共享浏览器,把seesion克隆到异地实出1号多开(情报通、微信、生意参谋、火币网、腾讯邮箱亲测有效)不是大牌浏览器不敢用!
- WinRAR 7z压缩包处理溢出分析和利用(转)
- mac VM fusion7 安装 win7教程
热门文章
- Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!
- Sublime Text设置快捷键让html文件在浏览器打开
- GitHub博客开发上线实战
- vue解决字符串模板@click无效的问题
- spring+mybatis+springMVC+redis缓存+mysql+bootstrap+异步提交----联系人小demo
- mysql修改表结构例子_mysql修改表结构方法实例详解
- C语言 const 和 define 区别 - C语言零基础入门教程
- BugkuCTF-MISC题神秘的文件
- java jackson 注解,java – 如何使用Jackson注释序列化此JSON?
- main()函数参数