转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html 

既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了。

与解析XML一样,生成XML文档也是用到了那4种方法。

一:DOM方法生成XML

步骤:

1:创建DocumentBuilder:DocumentBuilder builder=new DocumentBuilder();

2:创建dom对象:Document dom=builder.newDocument();

3:创建dom中元素:Element element=dom.createElement("元素名");

4:向元素添加子节点:element.appendChild(childElement);(dom树就是通过不停appendChild形成的)

5:向元素设置属性:element.setAttribute("属性名","属性值");

6:向元素添加文本内容:element.setTextContent("标签间内容");

7:把根元素添加至dom中:dom.appendChild(rootElement);(由于子节点都是添加到根结点下的,所以把根结点添加到dom就相当于把整棵标签树添加进dom了)

8:把dom对象导出到xml文件:

1)创建转换器工厂:TransformerFactory  factory=TransformerFactory.newInstance();

2)由工厂创建转换器实例:Transformer transformer=factory.newTransformer();

3)设置转换格式:transformer.setOutputProperty(属性,属性值);//设置输出到文档时的格式,比如:换行等

4)由转换器把dom资源转换到结果输出流,而结果输出流连接到一个xml文件:transformer.transform(new DOMSourse(dom),new StreamResult(xml_file));

二:SAX方法操作XML

步骤:

1:创建SAX转换器工厂:SAXTransformerFactory  factory=SAXTransformerFactory.newInstance();

2:创建转换handler:TransformerHandler handler=factory.newTransformerHandler();

3:由handler创建转换器:Transformer transformer=handler.getTransformer();

4:设置转换格式:transformer.setOutputProperty(属性,属性值);//设置输出到文档时的格式,比如:换行等

5:创建Result连接到xml文件:Result res=new StreamResult(new FileOutputStream(xml_file));

6:关联result到handler:handler.setResult(res);

7:利用handler操作xml文件:

1)打开dom对象:handler.startDocument();

2)创建元素:handler.startElement(uri,命名空间,元素名,属性列表);//没有则填null

3)创建子结点:handler.startElement(uri,命名空间,子元素名,属性列表);//在一个start与end的元素之间添加的结点就是它的子节点

4)为结点添加属性:上面start的元素名 element.setAttribute("","","属性名","属性值");

5)为结点添加文本内容:在一个element的start与end之间,handler.characters(byte[],start,length);//byte就是文本内容,后面可以进行截取

5)镜像结束元素:hanlder.endElement("","",元素名);//前面有start,操作完这个结点后切记要end,添加镜像结束标签。

6)关闭dom对象:handler.endDocument();

原理:通过result关联到xml文档,通过handler开始一个标签、设置标签属性、添加文本、结束一个标签方法操作result从而改变xml文档内容。

三:JDOM方法生成XML

步骤:创建根结点,由根结点创建dom对象,然后从根结点开始构造dom树,最后输出dom对象到xml文档即可。

1:生成根节点:Element root=new Element(“节点名”);

2:设置根结点属性:root.setAttribute(属性名,属性值);

3:把根作为参数创建dom对象:Document dom=new Document(root);

4:从根结点开始构造dom树:

1)创建结点:Element element=new Element("节点名");

2)设置结点属性:element.setAttribute(属性名,属性值);

3)设置结点文本内容:element.setText(文本内容);

4)添加结点到父节点下:father.addContent(child);

5:dom树构造完毕,进行输出:

1)创建XMLOutputer:XMLOutputer outputer=new XMLOutputer(format);//format参数可选,可以创建一个format对象设置输出格式,比如换行、编码格式等

2)通过outputer把dom对象输出到xml文档:outputer.output(dom,new FileOutputStream(xml_file));

四:DOM4j生成XML

步骤:

1:创建dom对象:Document dom=new Document();

2:创建根节点:Element rooe=dom.addElement("根节点名");

3:为根结点设置属性:element.setAttribute(属性名,属性值);

4:由根结点构建dom树:

1)创建子节点:Element element=father.addElement("节点名");

2)设置结点属性:element.setAttribute(属性名,属性值);

3)设置结点文本内容:element.setText(文本);

5:构建dom树完毕,把dom对象输出到xml文件:

1)创建XMLWriter:XMLWriter writer=new XMLWriter(new FileOutputStream(xml_file),format);//format参数可选,可以传一个format对象指定输出格式

2)设置输出到文档时是否转义:writer.setEscapeText(false);//true转义

3)通过writer把dom对象写到xml文档中:wtiter.write(dom);

Java生成XML文件与XML文件的写入的更多相关文章

  1. Java生成xlsx格式的excel文件

    xlsx格式的写入的数据量据说有百万级,结合实际需要该格式. public static void main(String[] args) throws Exception { OutputStrea ...

  2. [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置

    1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ...

  4. Java文件操作①——XML文件的读取

    一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...

  5. Java+XSL合并多个XML文件

    使用 Java 解析 XML 文件有许多成熟的工具,如 dom4j 等等.但在一些场景中,我们可能使用 Ant.Maven 等构建工具对多个 XML 文件进行合并,我们希望可以直接通过脚本文件,或者简 ...

  6. Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)

    相关资料:1.http://blog.csdn.net/luojianfeng/article/details/512198902.http://blog.csdn.net/avsuper/artic ...

  7. 使用Java解析XML文件或XML字符串的例子

    转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...

  8. java基础之概谈xml文件解析

    XML已经成为一种非常通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. 诸多web应用框架,其可配置的编程方式,给我们的开发带来了非常大程度的便捷,但细细 ...

  9. maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld" 打成jar包 mvn package mvn install http://blog.csdn.net/yaya1943/article/details/48464371

    使用maven编译Java项目 http://blog.csdn.net/yaya1943/article/details/48464371  使用"mvn clean"命令清除编 ...

  10. java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

    1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

随机推荐

  1. 用UIBezierPath数组对UIView进行镂空处理

    用UIBezierPath数组对UIView进行镂空处理 效果 源码 // // CutOutClearView.h // CutOutMaskView // // Created by YouXia ...

  2. 你真的懂Handler.postDelayed()的原理吗?

    转载自http://www.dss886.com/2016/08/17/01/   阅读之前先问大家一个问题:Handler.postDelayed()是先delay一定的时间,然后再放入messag ...

  3. hydra 安装和使用

    udo add-apt-repository ppa:pi-rho/security sudo apt-get update sudo apt-get install hydra hydra -l r ...

  4. JavaScript 中的异常处理

    考虑到 JS 中的错误可比服务器端的代码产生的错误要多得多,并且还难以发现及修正,所以 JS 代码必须有异常处理以及全局一场处理. try { //这段代码从上往下运行,其中任何一个语句抛出异常该代码 ...

  5. 在Windows7/8/10上,安装IIS

    (1)打开控制面板 (2)找到 程序和功能 (3)打开或者关闭Windows功能,找到Internet信息服务,确保 应用程序开发功能 .NET相关模块选中 (4)确保“静态内容”选中 (5)点击确定 ...

  6. 企业高并发的成熟解决方案(一)----搭建LVS负载均衡

    企业整个架构分析 1. App服务器上边部署应用,如果是java的话,一般是tomcat: 2. 负载均衡服务器负责转发请求,这种既有主机又有备机的负载均衡成为高可用(HA): 3. 一般web服务器 ...

  7. 奇怪吸引子---Arneodo

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  8. Asp.net WebAPi gzip压缩和json格式化

    现在webapi越来越流行了,很多时候它都用来做接口返回json格式的数据,webapi原本是根据客户端的类型动态序列化为json和xml的,但实际很多时候我们都是序列化为json的,所以webapi ...

  9. JavaScript-手机中访问页面判断

    最近在做微信服务号开发,其中遇到一个问题是微信服务号查看的个人的消息,如果点击在浏览器中查看(iOS中是在Safari中打开)应该是跳转到登录页面,因为页面需要从后台获取,因为需要服务端判断,如果是存 ...

  10. iOS开发-UISwipeGestureRecognizer滑动手势

    滑动手势也算是iOS中交互中很重要的一部分,上下左右滑动,UISwipeGestureRecognizer可以很轻松的解决这个问题,没什么难度直接看代码吧: UISwipeGestureRecogni ...