使用Dom4j生成xml文件(utf-8编码)

xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>

<result>
  <code>1</code>
  <data>
    <person>
      <name>张三</name>
      <id>1</id>
      <url>http://192.168.191.1:9999/TestWeb/c7fe21616d2a5e2bd1e84bd453a5b30f.jpg</url>
      <courses>
        <course>
          <courseName>语文</courseName>
          <courseMarks>90</courseMarks>
          <courseId>1</courseId>
        </course>
        <course>
          <courseName>数学</courseName>
          <courseMarks>80</courseMarks>
          <courseId>2</courseId>
        </course>
        <course>
          <courseName>英语</courseName>
          <courseMarks>70</courseMarks>
          <courseId>3</courseId>
        </course>
      </courses>
    </person>
    <person name="李四" id="2" url="http://192.168.191.1:9999/TestWeb/4052858c526002a712ef574ccae1948f.jpg">
      <course courseName="语文" courseMarks="91" courseId="1"/>
      <course courseName="数学" courseMarks="82" courseId="1"/>
      <course courseName="英语" courseMarks="73" courseId="1"/>
    </person>
  </data>
</result>


Java代码实现:

import java.io.*;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class TestXML {

	public static void main(String[] args) {
		OutputStreamWriter out = null;
		try {
			out = new OutputStreamWriter(new FileOutputStream("src/foo.xml"),"UTF-8");//写入文件(编码utf-8格式),文件路径要确认存在
			createDocument().write( out );
			// 字符串控制台输出
			OutputFormat format = OutputFormat.createPrettyPrint();  //转换成字符串
			format.setEncoding("UTF-8");
			XMLWriter writer = new XMLWriter( System.out, format );
			writer.write( createDocument() );
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out!=null) {
				try {
					out.flush();
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static Document createDocument() {
		Document document = DocumentHelper.createDocument();

		Element root = document.addElement( "result" );
		root.addElement("code").addText("1");
		Element data = root.addElement("data");

		Element person1 = data.addElement( "person" );
		person1.addElement( "name" ).setText("张三");
		person1.addElement( "id" ).setText("1");
		person1.addElement( "url" ).setText("http://192.168.191.1:9999/TestWeb/c7fe21616d2a5e2bd1e84bd453a5b30f.jpg");
		Element courses1 =person1.addElement( "courses" );
		Element course1 = courses1.addElement( "course" );
		course1.addElement( "courseName" ).setText("语文");
		course1.addElement( "courseMarks" ).setText("90");
		course1.addElement( "courseId" ).setText("1");
		Element course2 = courses1.addElement( "course" );
		course2.addElement( "courseName" ).setText("数学");
		course2.addElement( "courseMarks" ).setText("80");
		course2.addElement( "courseId" ).setText("2");
		Element course3 = courses1.addElement( "course" );
		course3.addElement( "courseName" ).setText("英语");
		course3.addElement( "courseMarks" ).setText("70");
		course3.addElement( "courseId" ).setText("3");

		Element person2 = data.addElement( "person" )
		                  .addAttribute( "name", "李四" )
		                  .addAttribute( "id", "2" )
		                  .addAttribute("url", "http://192.168.191.1:9999/TestWeb/4052858c526002a712ef574ccae1948f.jpg");
		person2.addElement( "course" )
		.addAttribute( "courseName", "语文" )
		.addAttribute( "courseMarks", "91" )
		.addAttribute( "courseId", "1" );
		person2.addElement( "course" )
		.addAttribute( "courseName", "数学" )
		.addAttribute( "courseMarks", "82" )
		.addAttribute( "courseId", "1" );
		person2.addElement( "course" )
		.addAttribute( "courseName", "英语" )
		.addAttribute( "courseMarks", "73" )
		.addAttribute( "courseId", "1" );

		return document;
	}

}

转载地址:http://www.cnblogs.com/zhi-hao/p/4016363.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的DOM API来创建XML文件,并使用Java中的压缩流API将其压缩成字节流,并且可以指定XML文件编码UTF-8,最终将其发送给用户。以下是一个示例代码: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 创建XML文档 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); // 创建XML元素 Element root = doc.createElement("root"); doc.appendChild(root); Element child1 = doc.createElement("child1"); child1.setTextContent("This is child1"); root.appendChild(child1); Element child2 = doc.createElement("child2"); child2.setTextContent("This is child2"); root.appendChild(child2); // 将XML文档转换成字节数组 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(bos, "UTF-8"))); byte[] xmlBytes = bos.toByteArray(); // 压缩XML字节数组 ByteArrayOutputStream compressedBos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(compressedBos); zos.putNextEntry(new ZipEntry("file.xml")); zos.write(xmlBytes); zos.closeEntry(); zos.close(); byte[] compressedBytes = compressedBos.toByteArray(); // 设置响应头信息 response.setContentType("application/zip"); response.setHeader("Content-Disposition", "attachment;filename=myfile.zip"); // 将压缩后的字节数组入响应输出流中 OutputStream out = response.getOutputStream(); out.write(compressedBytes); out.flush(); out.close(); } ``` 在上面的代码中,我们首先使用DOM API创建了一个XML文档。然后,我们将XML文档转换成字节数组,并使用ZipOutputStream将其压缩成字节数组。在转换XML文档时,我们指定了编码UTF-8。最后,我们设置响应头信息,指定要下载的文件名和类型为application/zip,并将压缩后的字节数组入响应输出流中,完成文件的发送。 需要注意的是,以上代码中创建的XML文件比较简单,如果需要创建更复杂的XML文件,可以使用Java中的DOM API或者其他XML API来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值