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 ...
随机推荐
- 为什么打开fiddler电脑就不能上网,关了就能正常打开了呢?
因为打开fiddler是它修改浏览器走代理服务器,关掉fiddler之后,代理服务器已经关闭了.但是,但是浏览器的代理模式还没改回来,就是说浏览器还要通过代理访问站点,然而代理服务器已经没有了.打开浏 ...
- Maven下Spring + SpringMvc + Hibernate4 配置实例
1. 开发环境 IDEA 2. 在pom.xml中配置引用相关的包. <properties> <junit.version>4.10</junit.version> ...
- 爬虫 2 XPath 和 pyquery
XPath 1.常用规则 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .. 选取当前节点的父节点 @ 选 ...
- Unity中建立文本保存数据
public void CreateYunYD() { GameToolsManager.Instance.effectType = EFFECTTYPE.YunYD; CreateYunOrWu(& ...
- C#使用Mutex实现单例应用程序
不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程). 实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具. Mutex是互 ...
- python--第十七天总结(Django)
基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: pytho ...
- 执行多条SQL语句,实现数据库事务(不可传入Sql参数)
执行多条SQL语句,实现数据库事务(不可传入Sql参数) http://blog.csdn.net/hanxuemin12345/article/details/9980371
- hibernate NUMBER 精度
通过Hibernate映射实体时会根据数据库中NUMBER类型的精度,生成相应的POJO类中相对应的主键类型.经过亲测结果如下: NUMBER(1) POJO类中生成的是Boolean publicc ...
- atom使用技巧
文本 批量处理 正则 空格换成换行:Atom替换换行符直接[Ctrl]+[F],然后选择正则,输入\n
- android 6.0+ 动态权限 拒绝不再询问后跳转设置应用详情页面
android 6.0+ 的权限 需要动态申请 这里的权限针对的是 敏感权限: SMS(短信) SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEI ...