A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

小鲁哥哥白话笔记-XML(解析)

上次我们对XML有了一个详细的认识,知道了它是怎么存储数据的,和它的存储结构。今天我们聊一聊怎么去解析XML文件来获取数据。
XML解析有两种方式:DOM方式SAX方式
DOM:Document Object Model,文档对象模型。这种方式是W3C推荐的处理XML的一种方式。
SAX:Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。
XML解析开发包
JAXP:是SUN公司推出的解析标准实现。
Dom4J:是开源组织推出的解析开发包。(牛,大家都在用,包括SUN公司的一些技术的实现都在用。)
我们能看到上述一共列举了2中解析开发包,但是我们在开发中一般都是使用Dom4J来进行对XML文件的解析,所以我们今天只给大家讲一讲常用的Dom4J,想JAXP我们今天就不做过多的阐述了,感兴趣的同学可以在下方留言,我们在进行解答。
Dom4J:
* Dom4J的常用方法:
*                 Document
*                          Element getRootElement() :获取根元素对象(根标签)
*                 Element
*                          List elements() :获取所有的子元素
*                          List elements(String name):根据指定的元素名称来获取相应的所有的子元素
*                          Element element(String name):根据指定的元素名称来获取子元素对象,如果元素名称重复,则获取第一个元素
*                          String        elementText(String name) :根据指定的子元素名称,来获取子元素中的文本
*                          String        getText() :获取当前元素对象的文本
*                          void setText(String text):设置当前元素对象的文本
*                          String        attributeValue(String name):根据指定的属性名称获取其对应的值
*                          public Element addAttribute(String name,String value):根据指定的属性名称和值进行添加或者修改BeanUtils的常用方法
给大家用Dom4J举个例子:
XML文件内容:
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8"?>
 
<State Code="37" Name="河南" 
description="郑州" GDP="99999亿"> 
  <City> 
    <Name>郑州</Name>  
    <Region>高薪区</Region> 
  </City>  
  <City>三门峡</City>  
  <City>洛阳</City>  
  <City>安阳</City>  
  <City>南阳</City> 
</State>
解析一个XML文件:
[Java] 纯文本查看 复制代码
private static void method2() throws Exception {
//2、遍历所有元素节点:打印他们的元素名称。
//获取根元素
Document document = Dom4JUtils.getDocument();
Element rootElement = document.getRootElement();
treeWalk(rootElement);
}
public static void treeWalk(Element element) {
//输出元素的名称
System.out.println(element.getName());
//获取指定元素的所有子元素
List<Element> es = element.elements();
for (Element e : es) {
treeWalk(e);
}
}
 
private static void method() throws Exception {
//1、得到某个具体的节点内容:打印"郑州"
Document document = Dom4JUtils.getDocument();
//获取根元素
Element rootElement = document.getRootElement();
//获取根元素下的所有子元素
List<Element> elements = rootElement.elements();
//根据索引获取第一个City元素
Element cityElement = elements.get(0);
//根据子元素的名称来获取子元素的文本
String text = cityElement.elementText("Name");
System.out.println(text);
}
 
 
使用Dom4J对XML文件进行删除和修改操作:
[Java] 纯文本查看 复制代码
public static void write2XML(Document document) throws IOException {
OutputFormat format = OutputFormat.createPrettyPrint();
//format.setEncoding("UTF-8");//默认的编码就是UTF-8
XMLWriter writer = new XMLWriter( new FileOutputStream("src/com/itheima_04/city.xml"), format );
        writer.write( document );
}
 
 
private static void method3() throws Exception, IOException {
//3、修改某个元素节点的主体内容:信阳-->安阳
Document document = Dom4JUtils.getDocument();
//获取根元素
Element rootElement = document.getRootElement();
//获取根元素下的所有子元素
List<Element> es = rootElement.elements();
//根据索引可以获取指定的元素
Element cityElement = es.get(3);
//修改文本
cityElement.setText("安阳");
//写回文件
Dom4JUtils.write2XML(document);
}
 
private static void method4() throws Exception, IOException {
//6、删除指定元素节点:删除元素开封
Document document = Dom4JUtils.getDocument();
//获取根元素
Element rootElement = document.getRootElement();
//获取根元素下的所有子元素
List<Element> es = rootElement.elements();
Element cityElement = es.get(1);
//无法自杀,找他爹
Element parentElement = cityElement.getParent();
parentElement.remove(cityElement);
//写回文件
Dom4JUtils.write2XML(document);
}
今天就给大家聊到这里了,XML解析比较好理解,就是所要记得知识点比较多,还需要大家多多联系,读万卷书不如行万里路,我们不能只做纸上谈兵。

点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
     黑马程序员济南中心联系电话:0531-55696830

2 个回复

倒序浏览
赞!!!!
回复 使用道具 举报
我习惯用DOM4J
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马