How to parse XML in java
DOM parsing XML
Dom parsing is to load all xml files into memory, assemble them into a dom tree, and then Parsing XML files through nodes and the relationship between nodes has nothing to do with the platform. Java provides a basic API for parsing XML files. It is relatively simple to understand, but because the entire document needs to be loaded into memory, it is not suitable for large documents. hour. (Recommended learning: java course)
SAX method to parse XML
Based on event-driven, one-by-one parsing, suitable for processing only xml data, not easy encoding, and it is difficult to access multiple different data in the same document at the same time
JDOM way to parse XML
Simplifies interaction with XML and is better than using DOM Faster to implement, using only concrete classes instead of interfaces thus simplifying the API and making it easy to parse XML using the
DOM4j way
An intelligence of JDOM Branch, more powerful, it is recommended to use
xml file proficiently
<?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>
DOM method
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(); } } }
SAX method
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文件开始标签 @Override public void startDocument() throws SAXException { super.startDocument(); System.out.println("sax解析开始"); } //遍历xml文件结束标签 @Override public void endDocument() throws SAXException { super.endDocument(); System.out.println("sax解析结束"); } @Override public 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+"----"); } } @Override public 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============="); } } @Override public 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); } } }
JDOM way
<!--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======"); } } }
DOM4J way
<!-- 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.加载xml Document 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()); } } } }
The above is the detailed content of How to parse XML in java. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Guide to Square Root in Java. Here we discuss how Square Root works in Java with example and its code implementation respectively.

Guide to Perfect Number in Java. Here we discuss the Definition, How to check Perfect number in Java?, examples with code implementation.

Guide to the Armstrong Number in Java. Here we discuss an introduction to Armstrong's number in java along with some of the code.

Guide to Random Number Generator in Java. Here we discuss Functions in Java with examples and two different Generators with ther examples.

Guide to Weka in Java. Here we discuss the Introduction, how to use weka java, the type of platform, and advantages with examples.

Guide to Smith Number in Java. Here we discuss the Definition, How to check smith number in Java? example with code implementation.

In this article, we have kept the most asked Java Spring Interview Questions with their detailed answers. So that you can crack the interview.

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is
