Dom4j 封装DOM和SAX 的方法
Dom4j 封装DOM的解析XML文件的方法:
List<Book> bookList=new ArrayList<Book>();
//1.1 建立一个解析器工厂:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//1.2 获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//1.3 将xml文件加载到内存中,得到表示整个文档的Document对象
InputStream inStream=DomParser.class.getClassLoader().getResourceAsStream("book.xml");
org.w3c.dom.Document w3cdoc=db.parse(inStream);
//2.创建一个DOMReader
DOMReader domReader=new DOMReader();
//3.将org.w3c.dom.Document转成org.dom4j.Document
org.dom4j.Document doc=domReader.read(w3cdoc);
Element ele=doc.getRootElement();//3.获得根节点
//4.使用迭代器对子节点进行迭代
Iterator<Element> it=ele.elementIterator();
while(it.hasNext()){
Book book=new Book();
Element bookEle=it.next();//取出当前的迭代的元素
book.setId(bookEle.attributeValue("id"));//attributeValue:根据属性名获得属性值
book.setName(bookEle.element("name").getText());
book.setAuthor(bookEle.elementText("author"));
bookList.add(book);
Dom4j 封装SAX的解析XML文件的方法:
List<Book> bookList=new ArrayList<Book>();
InputStream inStream=DomParser.class.getClassLoader().getResourceAsStream("book.xml");
SAXReader saxReader=new SAXReader();//1. 创建sax解析器
org.dom4j.Document doc=saxReader.read(inStream);//2. 获得org.dom4j.Document文档对象
Element ele=doc.getRootElement();//3.获得根节点
//4.使用迭代器对子节点进行迭代
Iterator<Element> it=ele.elementIterator();
while(it.hasNext()){
Book book=new Book();
Element bookEle=it.next();//取出当前的迭代的元素
book.setId(bookEle.attributeValue("id"));//attributeValue:根据属性名获得属性值
book.setName(bookEle.element("name").getText());
book.setAuthor(bookEle.elementText("author"));
bookList.add(book);
Dom4j 生成XML文件
import java.io.FileWriter; import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* dom4j
* @author bwf
*
*/
public class TestDom4j2 {
public static void main(String[] args) throws Exception { //创建Document
Document dom=DocumentHelper.createDocument();
//创建根节点
Element root=dom.addElement("我爱吃水果");
//创建元素,并附加属性
Element item1=root.addElement("水果").addAttribute("编号", "001");
Element name1=item1.addElement("名字").addText("苹果"); Element item2=root.addElement("水果").addAttribute("编号", "002");
Element name2=item2.addElement("名字").addText("柚子"); Element item3=root.addElement("水果").addAttribute("编号", "003");
Element name3=item3.addElement("名字").addText("草莓"); //美化格式
OutputFormat format = OutputFormat.createPrettyPrint();
//文件
FileWriter w=new FileWriter("c:/Users/bwf/Desktop/food.xml");
//输出流
XMLWriter writer =new XMLWriter(w,format); writer.write(dom);
writer.close();
}
}
Dom4j 封装DOM和SAX 的方法的更多相关文章
- iOS开发中XML的DOM和SAX解析方法
一.介绍 dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文 ...
- DOM、SAX、JDOM、DOM4J四种XML解析方法PK
基础方法(指不需要导入jar包,java自身提供的解析方式):DOM.SAXDOM:是一种平台无关的官方解析方式 --优点: (1)形成了树结构,直观好理解,代码更易编写 ...
- dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)
目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...
- java中四种操作(dom、sax、jdom、dom4j)xml方式详解与比较
1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特 ...
- java操作xml方式比较与详解(DOM、SAX、JDOM、DOM4J)
java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式的比较与详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准. ...
- XML解析【介绍、DOM、SAX详细说明、jaxp、dom4j、XPATH】
什么是XML解析 前面XML章节已经说了,XML被设计为"什么都不做",XML只用于组织.存储数据,除此之外的数据生成.读取.传送等等的操作都与XML本身无关! XML解析就是读取 ...
- java xml解析方式(DOM、SAX、JDOM、DOM4J)
XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML ...
- XML解析之DOM详解及与SAX解析方法的比较
XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...
- java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)
本文知识点(目录):本文下面的“实例及附录”全是DOM解析的相关内容 1.xml解析的含义 2.XML的解析方式 3.xml的解析工具 4.XML的解析原理 5.实例 6 ...
随机推荐
- Python12(接口继承,子类调用父类,多态)
接口继承: 基类不用实现内部逻辑,只是为了规范子类,可以用abc模块中以添加装饰器的方式实现 import abc class All_file(metaclass=abc.ABCMeta): @ab ...
- django之关联field 描述子是如何实现的
model定义时,每个field都是一个类属性,一个对象.在生成类时,属性有contribute_to_class的方法,会调用该方法. m2m field,它会先调用自己的contribute_to ...
- JEECG 集成KiSSO单点登录实现统一身份认证
JEECG 集成KiSSO单点登录实现统一身份认证 JEECG 如何为其他第三方系统实现统一身份认证服务,实现单点登录? 第三方系统如何对接呢? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的 ...
- 一个PHP session的误区,自己留着长记性看看
最近在研究PHP session相关的东西,销毁session根据手册使用session_destroy()就可以了,但是天真的以为销毁了会话就可以把会话内容也销毁,但是实际上会话的内容还保存在内存里 ...
- 云栖大会day1 上午
参与云栖大会第一天感受 早晨参与内容 数据智能实践专场 议程是 09:00-09:25 互联网下半场用户增长之路 吕志国 [友盟+]CPO 09:25-09:50 数据开启智慧零售的升级引擎 刘延明 ...
- php+Ajax 例子
PHP <?php $action = $_GET['action']; switch ($action) { case 'init_data_list': init_data_list(); ...
- UE4 多人网络对战游戏笔记
1.给物体施加一个径向力 定义一个径向力: URadialForceComponent* RadialForceComp; 在构造函数里赋默认值: RadialForceComp = CreateDe ...
- <Dare To Dream>第五次作业:团队项目需求改进与系统设计
任务1完成情况: a.分析<家教服务管理系统需求规格说明书>初稿的不足: uml建模不完整,无类图.流程图,仅有的用例图也不规范. b.功能分析的四个象限: c. 团队项目的WBS: d. ...
- 安装VMware tools
1.发现在vmware中无法复制粘贴,经查询后Centos精简版是没有VMware tools的.2.df是用来看磁盘空间使用情况的.3.rpm包的格式:name+version(主版本+此版本+修正 ...
- input 标签,不可更改
1.disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值.设置后文字的颜色会变成灰色.disabled 属 ...