XML转换为JAVA
将XML文档中的内容转换为JAVA对象共有4中方式它,它们分别是DOM,SAX,DOM4J , JDOM。接下来我用代码演示JAVA官方提供我们的两种方式DOM和SAX。
DOM是JDK自带的接下来我来演示一下怎样获取XML文本中的内容。以下是xml文件中的内容。
张三
12李四
16
我们通过DOM的方式来获取来获取xml文件中的内容。
public class DOMDemo01 {
private static DocumentBuilderFactory documentBuilderFactory ;
private static DocumentBuilder documentBuilder;
private static Document document;
public static void main(String[] args) {
documentBuilderFactory = DocumentBuilderFactory.newInstance();
try {
documentBuilder = documentBuilderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
try {
document = documentBuilder.parse("src/main/resources/xml/student.xml");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}NodeList parents =document.getElementsByTagName("student");
System.out.println("一共有"+parents.getLength()+"个节点");
for(int i=0;
i
以下是输出的内容
文章图片
image.png SAX解析XML文件
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
public class SAXDemo {
public static void main(String[] args) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
SAXHandle saxHandle = new SAXHandle();
parser.parse("src/main/resources/xml/student.xml",saxHandle);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXHandle extends DefaultHandler {/*
*用来表示解析的开始
*/
@Override
public void startDocument () throws SAXException {
super.startDocument();
System.out.println("解析标签开始");
}@Override
public void endDocument () throws SAXException {
super.startDocument();
System.out.println("解析标签结束");
}@Override
public void startElement (String uri, String localName, String qName,
Attributes attributes) throws SAXException {
super.startElement(uri,localName,qName,attributes);
if(qName.equals("student") ){
int length = attributes.getLength();
for(int i=0;
i
运行结果
文章图片
image.png 【XML转换为JAVA】总结:DOM解析将文件的内容全部加载在内存中并且形成一个DOM树,如果XML非常大,则DOM很浪费时间。SAX是基于事件的解析,会一步一步的判断每一行的XML文件中的内容,执行开始标签触发startDocument()方法,每走到结束标签都会触发一个endDocument方法。执行完最后标签会执行endDocument方法。
DOM
优点:形成DOM树,实现简单。
缺点: 当XML文件非常大时,对内存消耗比较大,容易影响解析,容易造成内存溢出。
SAX
优点:采用事件的驱动模式,不需要关系赋值节点,按行进行解析。
缺点:不易编码。
推荐阅读
- 为什么你的路演总会超时()
- 知识
- 财商智慧课(六)
- 低头思故乡——只是因为睡不着
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 吃了早餐,反而容易饿(为什么?)
- 你有婚内虐待行为吗()
- mybatisplus如何在xml的连表查询中使用queryWrapper
- Android中的AES加密-下
- ?【段子图】内裤为啥湿呢(想想好邪恶啊...)