关于XML的剖析体式格局有好多种,DOM、SAX、JDOM等等,至于用法和道理这里就不在说了(ps:楼主也不知道用法和道理)。这篇文章重要说说DOM4J的简朴操纵和用法。
DOM4J引见
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个非常优秀的JavaXML API,具有机能优秀、功能强大和极为易运用的特性,它的机能凌驾sun公司官方的dom手艺,同时它也是一个开放源代码的软件,能够在SourceForge上找到它。
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java鸠合框架并完全支撑DOM,SAX和JAXP。
这里用一个简朴的例子来引见DOM4J的用法。
注重:运用DOM4J剖析XML,须要在项目中引入DOM4J的jar包
XML文件
<Response T='203' T1='6' TaskID='20130800001963' MediaNum='3' Result = '1' Desc='查询胜利!' > <Media Name='IMG_20130425_141838.jpg' Mediasource ='1' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片1</Media> <Media Name='IMG_20130425_141838.jpg' Mediasource ='2' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片2</Media> <Media Name='IMG_20130425_141838.jpg' Mediasource ='3' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片3</Media> </Response>
DOM4J运用详解
步骤1:加载xml文件
加载xml能够分为重要的两种体式格局
1、直接加载文件地点的途径地点
2、加载字符串情势的xml(此体式格局重如果用在服务器返回效果中)
1.1、直接加载文件途径
SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(new File("E://CZBK//day01//caseUp.xml")); } catch (DocumentException e) { e.printStackTrace(); }
1.2、加载字符串情势的xml
SAXReader reader = new SAXReader(); Document document = null; try { //result是须要剖析的字符串 //剖析字符串须要转换成流的情势,能够指定转换字符编码 document = reader.read(new ByteArrayInputStream(result.getBytes("UTF-8"))); } catch (DocumentException e) { e.printStackTrace(); }
步骤2:剖析XML
在剖析XML之前,我们先来引见下XML的构造称谓,清晰下面4个题目对剖析XML很有协助
什么是节点(node)?什么是元素(element)?什么是属性(attribute)?什么是文本值(value)?
节点:“Response”、“Media”这些称之为节点
元素:以一个完全的标签完毕称之为元素,包括全部元素内容。比方:<Media Name='IMG_20130425_141838.jpg' Mediasource ='1' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片1</media》
属性:节点的属性值,对节点内容加上申明。比方:T='203' T1='6' TaskID='20130800001963' MediaNum='3' Result = '1' Desc='查询胜利!'
文本值:“图片1”称之为文本值。
在项目中不过就是缭绕元素、属性和文本值举行操纵,所以控制好这三部份的取值要领,也就控制了XML剖析。
2.1、猎取根节点
//猎取全部文档 Element rootElement = document.getRootElement();
rootElement包括全部xml文档的内容,也就是Response标签包括的一切内容
2.2、猎取Response节点的属性值
//猎取Response节点的Result属性值 String responseResult = rootElement.attributeValue("Result");
2.3、猎取Media元素
//猎取第一个Media元素 Element mediaElement = rootElement.element("Media"); //猎取一切的Media元素 List allMeidaElements = rootElement.elements("Media");
2.4、猎取Media属性值
//猎取第一个Media元素的Name属性值 String mediaName = mediaElement.attributeValue("Name"); //遍历一切的Media元素的Name属性值 for (int i = 0; i < allMeidaElements.size(); i++) { Element element = (Element) allMeidaElements.get(i); String name = element.attributeValue("Name"); }
2.5、猎取Media标签的文本值
//猎取第一个Meida元素的文本值 String value = mediaElement.getText();
完全代码
import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Textxml { public void xml() { SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(new File("E://CZBK//day01//caseUp.xml")); } catch (DocumentException e) { e.printStackTrace(); } //猎取全部文档 Element rootElement = document.getRootElement(); System.out.println("全部文档:"+rootElement.asXML()); //猎取Response节点的Result属性值 String responseResult = rootElement.attributeValue("Result"); System.out.println("Response节点的Result属性值:"+responseResult); //猎取第一个Media元素 Element mediaElement = rootElement.element("Media"); System.out.println("第一个Media元素:"+mediaElement.asXML()); //猎取一切的Media元素 List allMeidaElements = rootElement.elements("Media"); //猎取第一个Media元素的Name属性值 String mediaName = mediaElement.attributeValue("Name"); System.out.println("第一个Media元素的Name属性值:"+mediaName); //遍历一切的Media元素的Name属性值 for (int i = 0; i < allMeidaElements.size(); i++) { Element element = (Element) allMeidaElements.get(i); String name = element.attributeValue("Name"); } //猎取第一个Meida元素的文本值 String value = mediaElement.getText(); System.out.println("第一个Meida元素的文本值:"+value); } public static void main(String[] args) { Textxml textxml = new Textxml(); textxml.xml(); } }
运转效果
全部文档:<Response T="203" T1="6" TaskID="20130800001963" MediaNum="3" Result="1" Desc="查询胜利!"> <Media Name="IMG_20130425_141838.jpg" Mediasource="1" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片1</Media> <Media Name="IMG_20130425_141838.jpg" Mediasource="2" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片2</Media> <Media Name="IMG_20130425_141838.jpg" Mediasource="3" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片3</Media> </Response> Response节点的Result属性值:1 第一个Media元素:<Media Name="IMG_20130425_141838.jpg" Mediasource="1" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片1</Media> 第一个Media元素的Name属性值:IMG_20130425_141838.jpg 第一个Meida元素的文本值:图片1
跋文
1、XML剖析体式格局有许多中,未必每种都要控制,把个中的一种剖析弄清晰就够用了,至于机能上的差异楼主体味不出来,也不能解答这个题目
2、DOM4J的API有许多,这篇文章中只是引见了最基本的最经常使用的几种,如果有兴致能够自行研讨运用
以上就是XML剖析之DOM4J剖析的示例代码的细致内容,更多请关注ki4网别的相干文章!