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种方法)相关推荐

  1. java xml解析_Java解析XML(4种方法)

    xml文件 <?xml version="1.0" encoding="utf-8" ?><class><student>& ...

  2. XML格式文件详解及Java解析XML文件内容方法

    XML格式文件详解 1.概述 XML,即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. ...

  3. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...

  4. 详解Java解析XML的四种方法

    http://developer.51cto.com  2009-03-31 13:12  cnlw1985  javaeye  我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...

  5. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax;import org.xml.sax.Attributes; import org.xml.sax.SAXEx ...

  6. java解析xml的几种方式

    java解析xml的几种方式 博客分类: java基础备忘-好记性不然烂笔头 XMLJava应用服务器数据结构编程  第一种:DOM. DOM的全称是Document Object Model,也即文 ...

  7. Java解析Xml的三种方式总结

    转自:http://blog.csdn.net/zjf280441589/article/details/50613881 XML解析技术有两种 DOM SAX DOM方式  根据XML的层级结构在内 ...

  8. JAVA解析xml的五种方式比较

    1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取和操作文档的任意部分,是W3C的官方标准[优点]①允许应用 ...

  9. java解析xml文件的几种方式(DOM解析)

    好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...

  10. xml教程之java解析xml文档

    1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...

最新文章

  1. [Android Studio 权威教程]Windows下安装Android Studio
  2. [Spring cloud 一步步实现广告系统] 15. 使用开源组件监听Binlog 实现增量索引准备...
  3. IT十八掌作业_java基础第十一天_集合
  4. Fiddler抓取移动端请求
  5. sqlserver2008未将对象引用设置到对象的实例_面试官:ThreadLocal 的内存泄漏是弱引用导致的,你确定?...
  6. 计算机二级access选择题题库_资料最新计算机二级题库,选择题资料汇总+全真试题分享(Office)...
  7. Python 解释器
  8. .NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...
  9. Scaffold php,GitHub - yiiplus/scaffold: scaffold是一个基于Yii2高级项目模版工程化实现的应用程序...
  10. [原创]css设置禁止中文换行
  11. Bootstrap-Table事件和方法
  12. sass 混入 (@mixin 与 @include的使用)
  13. [简单]1.宝石和石头
  14. 如何将 Mac Dock 恢复到原始设置?
  15. websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
  16. Windows10中IE11浏览器的修复之路
  17. java案例2-7 随机抽取幸运观众
  18. Python3爬虫与多线程
  19. BT软件系统包含哪些部分?BT技术如何突破运营商的封锁?
  20. COSC1076_assignment2_221

热门文章

  1. 网络安全学习中的工具
  2. 《应用时间序列分析:R软件陪同》——2.6 MA 模型
  3. 概率图模型(PGM):贝叶斯网(Bayesian network)初探
  4. max模型怎么导入ue4_UE4模型导入流程,3DMAX贴图丢失问题解决方法
  5. 基于深度学习的银行卡号识别
  6. Excel在行上面一键定位可见单元格!
  7. html日期选择框源码,日期选择控件实例源码(带节假日)
  8. 用户画像pdf_【金猿产品展】易观方舟:智能用户数据中台
  9. winrar压缩软件弹出广告解决办法
  10. 油猴脚本的安装、配置及使用方法