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做的,不过后来由于浏览器的兼容性问题放弃了……

真是坑爹啊。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java 提供了许多用于操作 XML 的 API,其中比较常用的有 DOM、SAX 和 StAX。其中,StAX 是一种基于流的 API,它提供了一种逐行读写 XML 文档的方式,适合于处理大型 XML 文件或数据流。 StAX API 定义了两个主要的类:XMLStreamReader 和 XMLStreamWriter。其中,XMLStreamWriter 是用于将 XML 文档输出到流中的类。要使用 XMLStreamWriter 来输出 XML 文档,可以按照以下步骤进行: 1. 创建一个 XMLStreamWriter 对象,通常需要指定一个输出流作为参数。 2. 使用 XMLStreamWriter 写入 XML 文档的头部信息,例如文档类型、编码方式等。 3. 逐行写入 XML 元素和属性信息,可以使用 writeStartElement、writeAttribute、writeCharacters 等方法来完成。 4. 使用 XMLStreamWriter 写入 XML 文档的结尾信息,例如结束标签等。 5. 关闭 XMLStreamWriter 对象。 下面是一个简单的例子,演示了如何使用 XMLStreamWriter 将一个简单的 XML 文档输出到标准输出流中: ```java import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamWriter; public class StAXStreamWriterExample { public static void main(String[] args) throws Exception { // 创建输出流和 XMLStreamWriter 对象 OutputStream outputStream = System.out; Writer writer = new OutputStreamWriter(outputStream, "UTF-8"); XMLOutputFactory factory = XMLOutputFactory.newInstance(); XMLStreamWriter xmlWriter = factory.createXMLStreamWriter(writer); // 写入 XML 头部信息和根元素 xmlWriter.writeStartDocument("UTF-8", "1.0"); xmlWriter.writeStartElement("books"); // 写入子元素和属性信息 xmlWriter.writeStartElement("book"); xmlWriter.writeAttribute("id", "1"); xmlWriter.writeStartElement("name"); xmlWriter.writeCharacters("Java Programming"); xmlWriter.writeEndElement(); xmlWriter.writeEndElement(); // 写入根元素的结束标签 xmlWriter.writeEndElement(); // 关闭 XMLStreamWriter 和输出xmlWriter.close(); writer.close(); } } ``` 上面的代码将输出以下 XML 文档: ```xml <?xml version='1.0' encoding='UTF-8'?> <books> <book id="1"> <name>Java Programming</name> </book> </books> ``` 通过使用 XMLStreamWriter,我们可以较为方便地将 XML 文档输出到流中,并且可以按照需要逐行输出元素和属性信息,非常适合处理大型的 XML 数据流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值