XML经典问题!
package com.xml.toxml;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.AttributedCharacterIterator.Attribute;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class ToXml {
public static void main(String[] args) {
//声明数据库的url,用户名和密码;"watchWindows"为数据源名称
String url="jdbc:odbc:watchWindows";
String user="sa";
String password="";
Connection conn;
try{
//加载数据库驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
//获取数据库连接
conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
//查询数据库,放入记录中
ResultSet rst = st.executeQuery("select * from watchs");
if(rst!=null){
//如果有记录,调用writeXML方法,把记录传给writeXML方法
writeXML(rst);
}else{
System.out.println("数据库中没有数据!");
}
}catch(Exception e){
e.printStackTrace();
}
}
//定义创建XML文件的方法
public static void writeXML(ResultSet rst){
ResultSet set=rst;
Element element;
boolean flag;
try{
//获得解析工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//创建DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//创建一个document对象
Document document = builder.newDocument();
//建立文件根节点
Element rootElement = document.createElement("watchs");
//将根节点追加为document的子节点
document.appendChild(rootElement);
//遍历记录集,创建XML文件的各个节点
while(set.next()){
//创建watch节点
//System.out.println("\n");
Element sElement = document.createElement("watch");
//将watch追加为根节点的子节点
rootElement.appendChild(sElement);
//创建name子节点
//Attr attr = (Attr) document.createAttribute("brand");
//sElement.getAttribute(set.getString("w_brand"));
sElement.setAttribute("brand",set.getString("w_brand") );
//创建一个Text类型节点并追加为name节点的子节点
//element.appendChild(document.createTextNode(set.getString("w_brand")));
//将name节点追加为watch节点的子节点
//sElement.appendChild(element);
//创建price子节点
element = document.createElement("name");
element.appendChild(document.createTextNode(set.getString("w_name")));
sElement.appendChild(element);
//创建price子节点
element = document.createElement("price");
element.appendChild(document.createTextNode(set.getString("w_price")));
sElement.appendChild(element);
//创建marque子节点
element = document.createElement("marque");
element.appendChild(document.createTextNode(set.getString("w_marque")));
sElement.appendChild(element);
//创建users子节点
element = document.createElement("users");
element.appendChild(document.createTextNode(set.getString("w_users")));
sElement.appendChild(element);
//创建movement子节点
element = document.createElement("movement");
element.appendChild(document.createTextNode(set.getString("w_movement")));
sElement.appendChild(element);
//创建movement-type子节点
element = document.createElement("movement-type");
element.appendChild(document.createTextNode(set.getString("w_movementtype")));
sElement.appendChild(element);
//创建watch-case子节点
element = document.createElement("watch-case");
element.appendChild(document.createTextNode(set.getString("w_watchcase")));
sElement.appendChild(element);
//创建measurement子节点
element = document.createElement("measurement");
element.appendChild(document.createTextNode(set.getString("w_measurement")));
sElement.appendChild(element);
//创建thickness子节点
element = document.createElement("thickness");
element.appendChild(document.createTextNode(set.getString("w_thickness")));
sElement.appendChild(element);
//创建watch-head子节点
element = document.createElement("watch-head");
element.appendChild(document.createTextNode(set.getString("w_watchhead")));
sElement.appendChild(element);
//创建watch-bottom子节点
element = document.createElement("watch-bottom");
element.appendChild(document.createTextNode(set.getString("w_watchbottom")));
sElement.appendChild(element);
//创建watch-mirror子节点
element = document.createElement("watch-mirror");
element.appendChild(document.createTextNode(set.getString("w_watchmirror")));
sElement.appendChild(element);
//创建watch-dial子节点
element = document.createElement("watch-dial");
element.appendChild(document.createTextNode(set.getString("w_watchdial")));
sElement.appendChild(element);
//创建watchband子节点
element = document.createElement("watchband");
element.appendChild(document.createTextNode(set.getString("w_watchband")));
sElement.appendChild(element);
//创建watchband-color子节点
element = document.createElement("watchband-color");
element.appendChild(document.createTextNode(set.getString("w_watchbandcolor")));
sElement.appendChild(element);
//创建watch-button子节点
element = document.createElement("watch-button");
element.appendChild(document.createTextNode(set.getString("w_watchbutton")));
sElement.appendChild(element);
//创建waterproof子节点
element = document.createElement("waterproof");
element.appendChild(document.createTextNode(set.getString("w_waterproof")));
sElement.appendChild(element);
//创建watchear-width子节点
element = document.createElement("watchear-width");
element.appendChild(document.createTextNode(set.getString("w_watchearwidth")));
sElement.appendChild(element);
//创建launcher子节点
element = document.createElement("launcher");
element.appendChild(document.createTextNode(set.getString("w_launcher")));
sElement.appendChild(element);
//创建producer子节点
element = document.createElement("producer");
element.appendChild(document.createTextNode(set.getString("w_producer")));
sElement.appendChild(element);
//创建function 子节点
element = document.createElement("function");
element.appendChild(document.createTextNode(set.getString("w_function")));
sElement.appendChild(element);
}
//调用保存文件的方法
flag = SaveXmlFile(document,"d:/java/watchwindows.xml");
if(flag){
System.out.println("文件创建成功!");
}else{
System.out.println("文件创建失败!");
}
}catch(Exception e){
e.printStackTrace();
}
}
public static boolean SaveXmlFile(Document document,String filename){
boolean flag = true;
try{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
}catch(Exception e){
flag = false;
e.printStackTrace();
}
return flag;
}
}
如何设置生成的XML文件的编码为:gb2312
非常感谢!
如何设置生成的XML文件的编码为:gb2312
非常感谢!
如何设置生成的XML文件的编码为:gb2312
非常感谢!
[解决办法]
你发错板块了
[解决办法]
应该发哪呢??
[解决办法]
document.setXMLEncoding("gb2312");
[解决办法]
/建立文件根节点
Element rootElement = document.createElement("watchs");
貌似在这之前加 3楼的
[解决办法]
document没有这个属性!如果把XML的encoding设置为gb2312还是会乱码!
