java创建xml字符串_使用Java创建XML数据

该博客详细介绍了如何使用Java的DOM模型创建XML数据,包括创建XML文档、添加根元素和子元素、设置属性,以及将XML数据转换为字符串或输出到文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.siwuxie095.xml;

importjava.io.File;

importjava.io.StringWriter;

importjavax.xml.parsers.DocumentBuilder;

importjavax.xml.parsers.DocumentBuilderFactory;

importjavax.xml.parsers.ParserConfigurationException;

importjavax.xml.transform.Transformer;

importjavax.xml.transform.TransformerConfigurationException;

importjavax.xml.transform.TransformerException;

importjavax.xml.transform.TransformerFactory;

importjavax.xml.transform.dom.DOMSource;

importjavax.xml.transform.stream.StreamResult;

importorg.w3c.dom.Document;

importorg.w3c.dom.Element;

public classCreateXML {

/**

*使用Java语言实现创建XML数据和输出XML数据

* DOM方式操作和生成XML数据

*

* @param args

*/

public staticvoidmain(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文档作为转换的源

//

//第二个参数(输出值)可以有2种方法,

//第一个可以转换为字符串,第二个可以转换为文件

//传入匿名对象new StreamResult(),支持File输出一个文件,也支持Writer写出

//如果想让XML数据通过网络传播,需要转换成字符串,这就需要传入Writer

//先创建一个StringWriter

//有异常抛出,用try catch捕获

StringWriter writer=newStringWriter();

transformer.transform(newDOMSource(document), newStreamResult(writer));

//最后将StringWriter转换为字符串

//输出只有一行,是纯粹的XML内容,丢失了换行符、缩进符

System.out.println(writer.toString());

//转换成文件,第二个参数的参数传入文件对象

transformer.transform(newDOMSource(document),

newStreamResult(newFile("languages.xml")));

} catch(ParserConfigurationException e) {

e.printStackTrace();

} catch(TransformerConfigurationException e) {

e.printStackTrace();

} catch(TransformerException e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值