使用Java创建XML数据
------------siwuxie095
工程名:TestCreateXML
包名:com.siwuxie095.xml
类名:CreateXML.java
工程结构目录如下:
代码:
package com.siwuxie095.xml; import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class CreateXML { /** * 使用Java语言实现创建XML数据和输出XML数据 * DOM方式操作和生成XML数据 * * @param args */ public static
//创建一个新的 DocumentBuilderFactory, //使用静态方法调用 newInstance()方法,创建一个新的实例 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try {
//创建一个 DocumentBuilder //有异常抛出,用 try catch 捕获 DocumentBuilder builder=factory.newDocumentBuilder();
//创建一个全新的 XML 文档:Document //(注意:使用 org.w3c.dom 包中的 Document 类) Document document=builder.newDocument();
//先添加一个根元素:root,并指定标签:languages Element root=document.createElement("languages"); //设置根元素的属性,键值对 root.setAttribute("category", "it");
Element lan1=document.createElement("lan"); lan1.setAttribute("id", "1"); Element name1=document.createElement("name"); name1.setTextContent("Java"); Element ide1=document.createElement("ide"); ide1.setTextContent("Eclipse");
Element lan2=document.createElement("lan"); lan2.setAttribute("id", "2"); Element name2=document.createElement("name"); name2.setTextContent("Swift"); Element ide2=document.createElement("ide"); ide2.setTextContent("Xcode");
Element lan3=document.createElement("lan"); lan3.setAttribute("id", "3"); Element name3=document.createElement("name"); name3.setTextContent("C#"); Element ide3=document.createElement("ide"); ide3.setTextContent("Visual Studio");
//元素创建完毕后,将 name 元素和 ide 元素添加到 lan 元素中 //使之成为 lan 元素的子节点 //传入的是Node类型,而Element是继承自Node的,所以可以传入 lan1.appendChild(name1); lan1.appendChild(ide1);
lan2.appendChild(name2); lan2.appendChild(ide2);
lan3.appendChild(name3); lan3.appendChild(ide3);
//同理:将 lan 添加到 root 中 root.appendChild(lan1); root.appendChild(lan2); root.appendChild(lan3);
//最后,将 root 添加到 document 中, //实现 XML 数据的节点一层一层包装,最终包装到 root 和 document 中 document.appendChild(root);
//----------------------------------------------------------------- //XML数据准备完成,将当前创建好的 XML 数据,通过网络以字符串的形式传递 //(关键是:怎么将XML数据转换成字符串)
//创建一个 TransformerFactory,同样通过静态方法调用类的newInstance()方法 //获取一个新的实例 TransformerFactory transformerFactory=TransformerFactory.newInstance();
//创建一个 Transformer,可以将 XML 文档转换成其他格式 //有异常抛出,用 try catch 捕获 Transformer transformer=transformerFactory.newTransformer();
//调用 Transformer 的 transform() 方法,传入的参数类型很奇怪 //第一个参数(输入值)是 Source 类型,第二个参数(输出值)是 Result 类型 //第一个参数(输入值)是固定的,由于 Source 是通过 document 来创建的, //传入匿名对象 new DOMSource(),DOMSource()的参数是Node类型, //而 Document 也是继承自Node,所以可以传入 document,将 XML 文档作为转换的源 // 种方法, //第一个可以转换为字符串,第二个可以转换为文件 //传入匿名对象 new StreamResult(),支持File输出一个文件,也支持 Writer写出 //如果想让XML数据通过网络传播,需要转换成字符串,这就需要传入 Writer //先创建一个 StringWriter //有异常抛出,用 try catch 捕获 StringWriter writer=new StringWriter(); transformer.transform(new DOMSource(document), new StreamResult(writer));
//最后将 StringWriter 转换为 //输出只有一行,是纯粹的XML内容,丢失了换行符、缩进符 System.out.println(writer.toString());
//转换成文件,第二个参数的参数传入文件对象 transformer.transform(new DOMSource(document), new StreamResult(new File("languages.xml")));
} catch (ParserConfigurationException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); }
} } |
运行一览:
languages.xml 的内容:
格式化 languages.xml:
Ctrl+Shift+F,或 全选(Ctrl+A),再 Ctrl+I
运行后,工程结构目录一览:
【made by siwuxie095】
使用Java创建XML数据的更多相关文章
- Java中XML数据
Java中XML数据 XML解析——Java中XML的四种解析方式 XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解 ...
- Java 创建xml文件和操作xml数据
java中的代码 import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; ...
- 使用Java读取XML数据
---------------siwuxie095 工程名:TestReadXML 包名:com.siwuxie095.xml 类名:ReadXML.java 打开资源管理器,在工程 TestRead ...
- Java读取xml数据
xml中的代码 <?xml version="1.0" encoding="UTF-8"?> <books id="aaa" ...
- Java 创建 Excel 数据透视表
Excel 数据透视表具有强大的数据处理功能,能够使表格中的数据更加直观化.使用Excel 数据透视表,能方便用户快速的排序. 筛选各种数据,同时也能满足用户对不同数据汇总的需求.本文将介绍如何在Ja ...
- Java反射xml数据类
我们做自己的自动化测试.遇到使用xml存储数据,然而,这些数据可以被封装成一个类.将数据传递.通过下面的实际例子,展示给大家.请欣赏. 第一步:xml数据存储将被使用 第二步:读取xml文件的方法 第 ...
- Java 解析XML数据
实例一:获取指定两个标签之间的数据 XML数据格式: <?xml version="1.0" encoding="utf-8"?> <soap ...
- 使用Java创建JSON数据
--------------siwuxie095 工程名:TestCreateJSON 包名:com.siwuxie095.json 类名:Cr ...
- 通过Java创建XML(中文乱码已解决)
package com.zyb.xml; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.Ou ...
随机推荐
- CRC-16校验原理
最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定. 2.生成CRC码的基本原理: 任意一 ...
- 人生苦短之我用Python篇(paramiko模块)
该模块机遇SSH用于连接远程服务器并执行相关操作 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在kno ...
- ubuntu 设置plank开机自启之后关机键失效变为注销键
之前因为猎奇心,给我的ubuntu系统换了一个macUbuntu的桌面,但是之前用的dock是docky,昨日闲来无聊换成了plank,设置成然后就发现我的系统关不了机了,只能通过指令关机. 百度之后 ...
- linux 权限之所有者所属组
linux 如何改变文件属性与权限 我们知道档案权限对于一个系统的安全重要性,也知道档案的权限对于使用者与群组的相关性, 那如何修改一个档案的属性与权限呢? 我们这里介绍几个常用于群组.拥有者.各种身 ...
- xcode加载静态链接库.a文件总是失败
明明项目是对的,代码没有问题,并且把项目作为库项目引入到新项目中没问题,可是一旦把项目编译出.a文件,引入到新项目中不知为何会有几率出现一大堆错误,其实是xcode的缓存机制在作怪,去这个目录: /U ...
- bzoj 3173 最长上升子序列
Written with StackEdit. Description 给定一个序列,初始为空.现在我们将\(1\)到\(N\)的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字, ...
- ASP.NET中服务器控件的生命周期
服务器控件的生命周期是创建服务器控件最重要的概念.作为开发人员,必须对服务器控件生命周期深刻理解.当然,这不是一朝一夕就可以做到的.对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务 ...
- 【LeetCode】129. Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- 使用 ip 进行系统网络配置
检查是否有安装iproute工具 rpm -qa | grep iproute 查看所有可用接口 ip link show 启用或禁用接口 ip link set down eth1 ip link ...
- ④SpringBoot之thymeleaf使用
本文介绍SpringBoot使用的模板技术thymeleaf以及通过webJar进行前端资源的引入以及使用thymeleaf介绍简单说, Thymeleaf 是一个跟 Velocity.FreeMar ...