------------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
void main(String[] args) {

 

//创建一个新的 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数据的更多相关文章

  1. Java中XML数据

    Java中XML数据 XML解析——Java中XML的四种解析方式 XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解 ...

  2. Java 创建xml文件和操作xml数据

    java中的代码 import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; ...

  3. 使用Java读取XML数据

    ---------------siwuxie095 工程名:TestReadXML 包名:com.siwuxie095.xml 类名:ReadXML.java 打开资源管理器,在工程 TestRead ...

  4. Java读取xml数据

    xml中的代码 <?xml version="1.0" encoding="UTF-8"?> <books id="aaa" ...

  5. Java 创建 Excel 数据透视表

    Excel 数据透视表具有强大的数据处理功能,能够使表格中的数据更加直观化.使用Excel 数据透视表,能方便用户快速的排序. 筛选各种数据,同时也能满足用户对不同数据汇总的需求.本文将介绍如何在Ja ...

  6. Java反射xml数据类

    我们做自己的自动化测试.遇到使用xml存储数据,然而,这些数据可以被封装成一个类.将数据传递.通过下面的实际例子,展示给大家.请欣赏. 第一步:xml数据存储将被使用 第二步:读取xml文件的方法 第 ...

  7. Java 解析XML数据

    实例一:获取指定两个标签之间的数据 XML数据格式: <?xml version="1.0" encoding="utf-8"?> <soap ...

  8. 使用Java创建JSON数据

    --------------siwuxie095                             工程名:TestCreateJSON 包名:com.siwuxie095.json 类名:Cr ...

  9. 通过Java创建XML(中文乱码已解决)

    package com.zyb.xml; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.Ou ...

随机推荐

  1. android 进制转换方法

    import android.util.Log; public class CommandHelper { public static String intToHexString(int value) ...

  2. 快速沃尔什变换FWT

    快速沃尔什变换\(FWT\) 是一种可以快速完成集合卷积的算法. 什么是集合卷积啊? 集合卷积就是在集合运算下的卷积.比如一般而言我们算的卷积都是\(C_i=\sum_{j+k=i}A_j*B_k\) ...

  3. Servlet、Filter、Listener

    1.Servlet 1.1servlet接口 All Known Implementing Classes:GenericServlet, HttpServlet GenericServlet:与协议 ...

  4. 记录一下 C51 里的位运算

    记录一下 C51 里的位运算 一篇上个世纪的文章<单片机的C语言中位操作用法>1 今天看到一个这样的运算,这相当于清了 XICFG. #define INT1IS1 0x80 #defin ...

  5. OLAP和OLTP的区别(基础知识)

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 ( ...

  6. POJ2142(扩展欧几里得)

    The Balance Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5991   Accepted: 2605 Descr ...

  7. RecyclerView(滚动控件)的用法

    1.首先在build.gradle中添加依赖库 compile 'com.android.support:recyclerview-v7:24.2.1' 2.修改activity_main.xml & ...

  8. Quartz.net 2.x 学习笔记02-Quartz.net 2.x在MVC站点中结合Log4net的使用

    Quartz.net 2.x在MVC站点中结合Log4net的使用 首先新建一个MVC的空站点: 第二步,添加Quartz.net的引用 在搜索处输入quartz.net搜索安装即可(目前是2.3) ...

  9. 【转】Jenkins+Ant+Jmeter自动化性能测试平台

    Jmeter是性能测试的工具,java编写.开源,小巧方便,可以图形界面运行也可以在命令行下运行.网上已经有人使用ant来运行,,既然可以使用ant运行,那和hudson.jenkins集成就很方便了 ...

  10. 1112 Stucked Keyboard

    题意:坏掉的键若被按下,总是重复打出k次.比如,k为3,打出的序列如下—— thiiis iiisss a teeeeeest 坏掉的键是i和e,虽然iiisss中s也出现了3次,但它不是坏掉的键,因 ...