Java解析XML(4种方法)
xml文件
<?xml version="1.0" encoding="utf-8" ?>
<class><student><firstname>cxx1</firstname><lastname>Bob1</lastname><nickname>stars1</nickname><marks>85</marks></student><student rollno="493"><firstname>cxx2</firstname><lastname>Bob2</lastname><nickname>stars2</nickname><marks>85</marks></student><student rollno="593"><firstname>cxx3</firstname><lastname>Bob3</lastname><nickname>stars3</nickname><marks>85</marks></student>
</class>
1.DOM方式
package com.cxx.xml;import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
/*** @Author: cxx* Dom操作xml* @Date: 2018/5/29 20:19*/
public class DomDemo {//用Element方式public static void element(NodeList list){for (int i = 0; i <list.getLength() ; i++) {Element element = (Element) list.item(i);NodeList childNodes = element.getChildNodes();for (int j = 0; j <childNodes.getLength() ; j++) {if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {//获取节点System.out.print(childNodes.item(j).getNodeName() + ":");//获取节点值System.out.println(childNodes.item(j).getFirstChild().getNodeValue());}}}}public static void node(NodeList list){for (int i = 0; i <list.getLength() ; i++) {Node node = list.item(i);NodeList childNodes = node.getChildNodes();for (int j = 0; j <childNodes.getLength() ; j++) {if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {System.out.print(childNodes.item(j).getNodeName() + ":");System.out.println(childNodes.item(j).getFirstChild().getNodeValue());}}}}public static void main(String[] args) {//1.创建DocumentBuilderFactory对象DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//2.创建DocumentBuilder对象try {DocumentBuilder builder = factory.newDocumentBuilder();Document d = builder.parse("src/main/resources/demo.xml");NodeList sList = d.getElementsByTagName("student");//element(sList);node(sList);} catch (Exception e) {e.printStackTrace();}}
}
结果截图
2.SAX方式
package com.cxx.xml;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;/*** @Author: cxx* SAX解析DOM* 一行一行 Handler* startElement* endElement* @Date: 2018/5/29 20:03*/
public class SaxDemo {public static void main(String[] args) throws Exception {//1.或去SAXParserFactory实例SAXParserFactory factory = SAXParserFactory.newInstance();//2.获取SAXparser实例SAXParser saxParser = factory.newSAXParser();//创建Handel对象SAXDemoHandel handel = new SAXDemoHandel();saxParser.parse("src/main/resources/demo.xml",handel);}
}class SAXDemoHandel extends DefaultHandler {//遍历xml文件开始标签@Overridepublic void startDocument() throws SAXException {super.startDocument();System.out.println("sax解析开始");}//遍历xml文件结束标签@Overridepublic void endDocument() throws SAXException {super.endDocument();System.out.println("sax解析结束");}@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {super.startElement(uri, localName, qName, attributes);if (qName.equals("student")){System.out.println("============开始遍历student=============");//System.out.println(attributes.getValue("rollno"));}else if (!qName.equals("student")&&!qName.equals("class")){System.out.print("节点名称:"+qName+"----");}}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {super.endElement(uri, localName, qName);if (qName.equals("student")){System.out.println(qName+"遍历结束");System.out.println("============结束遍历student=============");}}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {super.characters(ch, start, length);String value = new String(ch,start,length).trim();if (!value.equals("")) {System.out.println(value);}}
}
结果截图
3.JDOM方式
<!--jdom -->
<dependency><groupId>org.jdom</groupId><artifactId>jdom</artifactId><version>1.1.3</version>
</dependency>
package com.cxx.xml;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;
/*** @Author: cxx* JDom解析xml* 快速开发XML应用程序。* 是一个开源项目* JDOM主要用来弥补DOM和SAX在实际应用当中的不足。* @Date: 2018/5/30 11:44*/
public class JDomDemo {public static void main(String[] args) throws Exception {//1.创建SAXBuilder对象SAXBuilder saxBuilder = new SAXBuilder();//2.创建输入流InputStream is = new FileInputStream(new File("src/main/resources/demo.xml"));//3.将输入流加载到build中Document document = saxBuilder.build(is);//4.获取根节点Element rootElement = document.getRootElement();//5.获取子节点List<Element> children = rootElement.getChildren();for (Element child : children) {System.out.println("通过rollno获取属性值:"+child.getAttribute("rollno"));List<Attribute> attributes = child.getAttributes();//打印属性for (Attribute attr : attributes) {System.out.println(attr.getName()+":"+attr.getValue());}List<Element> childrenList = child.getChildren();System.out.println("======获取子节点-start======");for (Element o : childrenList) {System.out.println("节点名:"+o.getName()+"---"+"节点值:"+o.getValue());}System.out.println("======获取子节点-end======");}}
}
结果截图
4.DOM4J方式
<!-- dom4j --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version>
</dependency>
package com.cxx.xml;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.util.Iterator;
import java.util.List;/*** @Author: cxx* Dom4j解析xml* @Date: 2018/5/30 12:21*/
public class Dom4JDemo {public static void main(String[] args) throws Exception {//1.创建Reader对象SAXReader reader = new SAXReader();//2.加载xmlDocument document = reader.read(new File("src/main/resources/demo.xml"));//3.获取根节点Element rootElement = document.getRootElement();Iterator iterator = rootElement.elementIterator();while (iterator.hasNext()){Element stu = (Element) iterator.next();List<Attribute> attributes = stu.attributes();System.out.println("======获取属性值======");for (Attribute attribute : attributes) {System.out.println(attribute.getValue());}System.out.println("======遍历子节点======");Iterator iterator1 = stu.elementIterator();while (iterator1.hasNext()){Element stuChild = (Element) iterator1.next();System.out.println("节点名:"+stuChild.getName()+"---节点值:"+stuChild.getStringValue());}}}
}
总结
Java解析XML(4种方法)相关推荐
- java xml解析_Java解析XML(4种方法)
xml文件 <?xml version="1.0" encoding="utf-8" ?><class><student>& ...
- XML格式文件详解及Java解析XML文件内容方法
XML格式文件详解 1.概述 XML,即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...
- 详解Java解析XML的四种方法
http://developer.51cto.com 2009-03-31 13:12 cnlw1985 javaeye 我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax;import org.xml.sax.Attributes; import org.xml.sax.SAXEx ...
- java解析xml的几种方式
java解析xml的几种方式 博客分类: java基础备忘-好记性不然烂笔头 XMLJava应用服务器数据结构编程 第一种:DOM. DOM的全称是Document Object Model,也即文 ...
- Java解析Xml的三种方式总结
转自:http://blog.csdn.net/zjf280441589/article/details/50613881 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内 ...
- JAVA解析xml的五种方式比较
1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取和操作文档的任意部分,是W3C的官方标准[优点]①允许应用 ...
- java解析xml文件的几种方式(DOM解析)
好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...
- xml教程之java解析xml文档
1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...
最新文章
- [Android Studio 权威教程]Windows下安装Android Studio
- [Spring cloud 一步步实现广告系统] 15. 使用开源组件监听Binlog 实现增量索引准备...
- IT十八掌作业_java基础第十一天_集合
- Fiddler抓取移动端请求
- sqlserver2008未将对象引用设置到对象的实例_面试官:ThreadLocal 的内存泄漏是弱引用导致的,你确定?...
- 计算机二级access选择题题库_资料最新计算机二级题库,选择题资料汇总+全真试题分享(Office)...
- Python 解释器
- .NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...
- Scaffold php,GitHub - yiiplus/scaffold: scaffold是一个基于Yii2高级项目模版工程化实现的应用程序...
- [原创]css设置禁止中文换行
- Bootstrap-Table事件和方法
- sass 混入 (@mixin 与 @include的使用)
- [简单]1.宝石和石头
- 如何将 Mac Dock 恢复到原始设置?
- websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
- Windows10中IE11浏览器的修复之路
- java案例2-7 随机抽取幸运观众
- Python3爬虫与多线程
- BT软件系统包含哪些部分?BT技术如何突破运营商的封锁?
- COSC1076_assignment2_221