用java操作XML文件(DOM解析方式)
XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具。
XML的作用:
(1)用作配置文件
(2)简化数据共享
(3)简化数据传输
XML DOM解析方式
在java工程中导入dom4j.jar包.
(一)用java读XML文件
<1>创建SAXReader对象.
RAXReader reader=new RAXReader();
<2>调用RAXReader的Document read(File file)方法,获取xml文件的Document对象(包含xml文件的dom结构).
Document doc=reader.read(new File("config.xml"));
注:read有很多重载方法,还可以传入流对象.
<3>调用Document的 Element getRootElement()方法,获取xml的根元素.
Element root=doc.getRootElement();
<4>获取根元素之后,有很多Element方法,利用这些方法就可以不断的解析xml的dom结构.
(1)获取当前元素下的所有子元素
List<Element> elements()
(2)获取当前元素下的所有同名子元素
List<Element> elements(String name)
(3)获取当前元素指定名称的子元素
Element element(String name)
(4)获取当前元素的名称
String getName()
(5)获取当前元素的内容
String getText()
String getTextTrim()
(6)获取当前元素下指定名称的子元素内容
String elementText(String name)
(7)获取当前元素的属性
Attribute attribute(int index) //获取当前元素第index属性,从0开始
Attribute attribute(String name) //获取当前元素指定名称的属性
<5>属性Attribute的相关方法
(1)获取当前属性的名称
String getName()
(2)获取当前属性的值
String getValue()
(二)用java写xml文件
先创建document对象,然后不断补全document的DOM结构,最后把document对象写入指定xml文件中
<1>先创建一个document对象,必须使用DocumentHelper的静态方法Document static createDocument()来创建document对象
Document doc=DocumentHelper.createDocument()
<2>顶用Document的Element addElement()向document对象中添加指定名称根元素(只能调用一次,因为根元素只有一个)
Element root=doc.addElement(String name)
<3>后续,Element有很多方法,用于不断的补全Document的DOM结构
(1)在当前元素下添加指定名称的子元素(返回值是子元素)
Element addElement(String name)
(2)在当前元素添加其内容(返回值当前元素)
Element addText(String text)
(3)在当前元素添加器属性(返回值是当前元素,可以不断追加其属性)
Element addAttribute(String name,String value)
<4>补全DOM结构后,把document对象写入xml文件中
(1)创建XMLWriter高级流对象
XMLWriter writer=new XMLWriter();
注:XMLWriter writer=new XMLWriter(OutputStream os);,可省略第二步
(2)为XMLWriter设定低级输出流
FileOutputStream fos=new FileOutputStream("new.xml");
writer.setOutputStream(fos);
(3)将document对象写入xml文件中
wirter.write(doc);
(4)最后关闭XMLWriter流对象
writer.close();
最新文章
- 关于背景图相对父容器垂直居中问题 —— vertical-align 和 line-height 之间的区别
- 【转】Matlab练习程序(各向异性扩散)
- 【maven】 在 MyEcplise上使用maven搭建Web项目
- php + Bootstrap-v3-Typeahead 自动完成组件的使用
- 【白痴弟弟和你加强应用层】阅读 Develop API Guides 思考(一个)
- How to change your password of your mysql account in WampServer
- Spark算子--map和flatMap
- Mybatis源码分析(原创)
- 微信小程序我的界面
- RESTful规范1
- vue.js实战——vue 实时时间
- Expm 10_1 带负权值边的有向图中的最短路径问题
- CSS3--难以想象的滤镜效果
- Delphi7如何实现让Tedit显示文字垂直居中(上下居中)
- 设置回车的默认按钮detectEnter
- 机器学习理论基础学习17---贝叶斯线性回归(Bayesian Linear Regression)
- IE6里样式表不起作用解决方法
- iOS推送功能极光推送的介绍与实现
- 第一章 HttpClient的使用
- 【BIRT】使用rptlibrary设置统一数据源
热门文章
- trace工具,c++/c#/python
- 【C】 04 - 表达式和语句
- 【C】 05 - 声明和定义
- 为什么要使用sass
- localStorage兼容ie6/7 用addBehavior 实现
- 【转】Reactor与Proactor两种模式区别
- ruby&;mongo_mapper
- [Mongodb]3.2版本的一些基本操作--待续
- 编译错误:error: multi-line comment
- CRM JS 设置lookup字段 setSimpleLookupValue