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

以下是输出的内容

XML转换为JAVA
文章图片
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

运行结果

XML转换为JAVA
文章图片
image.png 【XML转换为JAVA】总结:DOM解析将文件的内容全部加载在内存中并且形成一个DOM树,如果XML非常大,则DOM很浪费时间。SAX是基于事件的解析,会一步一步的判断每一行的XML文件中的内容,执行开始标签触发startDocument()方法,每走到结束标签都会触发一个endDocument方法。执行完最后标签会执行endDocument方法。
DOM
优点:形成DOM树,实现简单。
缺点: 当XML文件非常大时,对内存消耗比较大,容易影响解析,容易造成内存溢出。
SAX
优点:采用事件的驱动模式,不需要关系赋值节点,按行进行解析。
缺点:不易编码。

    推荐阅读