这几天,从迷惘到清晰。我想记录一下,这次的心路历程。
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"));
然后下面的代码比较重要。
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做的,不过后来由于浏览器的兼容性问题放弃了……
真是坑爹啊。