java输出xml数据

这几天,从迷惘到清晰。我想记录一下,这次的心路历程。

package com.xh.xml;   

import java.io.FileOutputStream;   

import java.io.IOException;   

import org.jdom.Document;   

import org.jdom.Element;   

import org.jdom.JDOMException;   

import org.jdom.output.XMLOutputter;   

public class Java2XML {  

    public void BuildXMLDoc() throws IOException, JDOMException {   

       // 创建根节点 list;   

        Element root = new Element("list");   

       // 根节点添加到文档中;   

        Document Doc = new Document(root);   

       // 此处 for 循环可替换成 遍历 数据库表的结果集操作;   

       for (int i = 0; i < 2; i++) {  

           // 创建节点 user;   

           Element elements = new Element("user");   

           // 给 user 节点添加属性 id;   

           elements.setAttribute("id", "" + i);  

           // 给 user 节点添加子节点并赋值;   

           // new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值;   

           elements.addContent(new Element("name").setText("xuehui"));  

           elements.addContent(new Element("age").setText("28"));  

           elements.addContent(new Element("sex").setText("Male"));  

           // 给父节点list添加user子节点;  

           root.addContent(elements);  

       }  

        XMLOutputter XMLOut = new XMLOutputter();  

       // 输出 user.xml 文件;  

        XMLOut.output(Doc, new FileOutputStream("user.xml"));  

    } 

    public static void main(String[] args) {  

       try {  

           Java2XML j2x = new Java2XML();  

           System.out.println("生成 mxl 文件...");  

           j2x.BuildXMLDoc();  

       } catch (Exception e) {  

           e.printStackTrace();  

       }  

    }  

}  

生成的 user.xml  文件  

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

<list>  

    <user id="0">  

        <name>xuehui</name>  

        <age>28</age>  

        <sex>Male</sex>  

    </user>  

    <user id="1">  

        <name>xuehui</name>  

        <age>28</age>  

        <sex>Male</sex>  

    </user>  

</list>

生成XML时候处理缩进,对输出格式进行美化

  只需要将上面生成XML时候的带吗修改成如下代码: 

Format format = Format.getPrettyFormat();

XMLOutputter XMLOut = new XMLOutputter(format);

XMLOut.output(Doc, new FileOutputStream("user.xml"));

生成XML的时候,处理特殊字符

element.addContent(new CDATA("<xml> content"));

生成XML的时候,设置编码

XMLOutputter XMLOut = new XMLOutputter();

XMLOut.setEncoding("gb2312");

XMLOut.output(Doc, new FileOutputStream("test1.xml"));

以上的代码是转的,也是仿照这个例子才进入将数据转成xml格式,在此感谢这位作者的无私分享。

然后下面的代码比较重要。

Format format = Format.getPrettyFormat();
format.setEncoding("gb2312");
XMLOutputter xmlOut = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlOut.output(doc, bo);
String xml = bo.toString();
response.setContentType("text/xml; charset=gb2312");
PrintWriter out = response.getWriter();
out.print(xml);
out.flush();
out.close();

将doc转成String,然后输出到页面上。但是呢,在谷歌浏览器上没显示头文件,想了很多办法,后来才发现在IE上是有头文件的,google浏览器不渲染。以下是网上查的资料

XML文件可以关联一个XSLT文件,用于渲染显示出来的内容。XSLT全称是EXtensible Stylesheet Language,它的作用是把XML文件中的数据用直观的方式显示给用户看,XSLT和XML的关系类似MVC中的V和C。具体XSLT的语法可自行Google……

如果XML没有关联XSLT文件,那浏览器就没办法渲染,只好把XML的树形结构显示出来,这就是为什么你看到那一条提示。实际上,没有必要去解决它。

曾经Blizzard的官网一度是用XML+XSLT做的,不过后来由于浏览器的兼容性问题放弃了……

真是坑爹啊。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值