java xml解析方式(DOM、SAX、JDOM、DOM4J)
2020-12-13 04:27
标签:ali tco oca group java attrs 引号 put 类型 XML值可扩展标记语言,是用来传输和存储数据的。 XMl的特定: XML元素: XMl元素是只从包括开始标签到结束标签的部分,元素可包含其他元素、文本或两者都包含,也可拥有属性。 XML解析 基础方法:DOM、SAX DOM解析:平台无关的官方解析方式 SAX解析:Java中基于事件驱动的解析方式 扩展方法:JDOM、DOM4J (在基础方法上扩展的,只有Java能够使用的解析方式) 1.DOM解析 优点: ·形成了树结构,直观好理解 ·解析过程中树结构保留在内存中方便修改 缺点: ·当xml文件较大时,对内存消耗比较大,容易影响解析性能,并造成内存溢出 2.SAX解析 优点: ·采用事件驱动模式,对内存消耗比较小 ·适用于只需处理xml中数据时 缺点: ·不易编码 ·很难同时访问同一个xml中的多处不同数据 3.JDOM解析 特征: ·使用了具体类,不使用接口。 ·API大量使用了Collections类,源码开源 4.DOM4J解析 特征: ·使用了接口和抽象基本类方法 ·具有性能优异、灵活性好、功能强大和极端易用的特点。 ·开源 java xml解析方式(DOM、SAX、JDOM、DOM4J) 标签:ali tco oca group java attrs 引号 put 类型 原文地址:https://www.cnblogs.com/www-123456/p/11110721.html
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.util.LinkedList;
import java.util.List;
/**
* DOM 解析xml
*/
public class DOM {
public static void main(String[] args) throws Exception {
// 1.创建 DocumentBuilderFactory 对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2.通过 DocumentBuilderFactory对象创建 DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder();
// 3.使用 DocumentBuilder对象来加载xml
Document document = db.parse("bean.xml");
System.out.println("----------------- DOM开始解析 xml -----------------");
// 获取 xml 文件的根节点
Element element = document.getDocumentElement();
getNoeMsg(element);
System.out.println("\n\n----------------- DOM结束解析 xml -----------------");
}
/**
* 获取Node节点信息
* @param node
*/
public static void getNoeMsg(Node node){
if(node.getNodeType() == Node.ELEMENT_NODE){
System.out.print(" node.getNodeName());
getNodeAttrs(node);
System.out.print(">\n");
NodeList nodeList = node.getChildNodes();
// 筛选出节点类型为ELEMENT_NODE 的节点
List
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;
public class SAX {
public static void main(String[] args) throws Exception {
// 1.创建SAXParserFactory对象
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
// 2.通过SAXParserFactory对象创建 SAXParser
SAXParser saxParser = saxParserFactory.newSAXParser();
// 3.通过SAXParser加载xml,并传入 DefaultHandler 类型的对象进行解析
saxParser.parse("bean.xml", new SAXParserHandler());
}
static class SAXParserHandler extends DefaultHandler{
/**
* 解析xml开始执行方法
* @throws SAXException
*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.print("============= SAX开始解析xml =============\n");
}
/**
* 解析xml结束执行方法
* @throws SAXException
*/
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.print("\n============= SAX结束解析xml =============");
}
/**
* 解析节点开始执行方法
* @param uri
* @param localName
* @param qName
* @param attributes
* @throws SAXException
*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
System.out.print(" qName);
for (int i = 0,len = attributes.getLength(); i ){
System.out.print(" " + attributes.getQName(i) + "=‘");
System.out.print(attributes.getValue(i) + "‘");
}
System.out.print(">");
}
/**
* 解析节点结束执行方法
* @param uri
* @param localName
* @param qName
* @throws SAXException
*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
System.out.print("" + qName + ">");
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
String str = new String(ch, start, length);
System.out.print(str);
}
}
}
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
*
*
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
/**
*
*
文章标题:java xml解析方式(DOM、SAX、JDOM、DOM4J)
文章链接:http://soscw.com/essay/29502.html