JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--XML  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
用jdom技术将数据库数据写入读出xml文件
作者:未知     文章来源:www.jspcn.net
访问次数:3353次     加入时间:2005年01月19日
//很多时候,为了避免多次访问/查询数据库重的数据或者便于察看,将需要的数据一次取出并写入xml文件

//通过查询条件m_condition 按照xmlMapPath的模式/模板 将从库中的数据写到resultXml
//并返回记录条数

public int writeXML(String m_condtion,String xmlMapPath,String resultXml){
int recordNum=0;
String tableName = "table";
String tableCol = "*";
String sql = "select " + tableCol + " from " + tableName + " where " + m_condtion;

Document mapDoc = null;
Document dataDoc = null;
Document newDoc = null;
//开始准备工作
try {
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
//Create the DocumentBuilder
DocumentBuilder docbuilder = dbfactory.newDocumentBuilder();
//Parse the file to create the Document
mapDoc = docbuilder.parse(xmlMapPath);

dataDoc = docbuilder.newDocument();
//Instantiate the new Document
newDoc = docbuilder.newDocument();
} catch (Exception e) {
System.out.println(e.getMassege());
}

//开始读取映射作用的template文件

Element mapRoot = mapDoc.getDocumentElement();
Node dataNode = mapRoot.getElementsByTagName("data").item(0);
Element dataElement = (Element)dataNode;

//Create a new element called "data"
Element dataRoot = dataDoc.createElement("data");

try {
/******** 这里创建一个连接conn,并创建statement
根据不同的数据源创建
********************************/
ResultSet resultset = stmt.query(sql);
//Get the ResultSet information
ResultSetMetaData resultmetadata = resultset.getMetaData();
int numCols = resultmetadata.getColumnCount();
Log.write("db_to_xml:numCols:" + numCols);


while (resultset.next()) {
//Create a new element called "row"
Element rowEl = dataDoc.createElement("row");

//为了便于浏览和读,创建列数,以id为标记
String colName = "id";
String colVal =Integer.toString(++recordNum);
Element dataEl = dataDoc.createElement(colName);
dataEl.appendChild(dataDoc.createTextNode(colVal));

rowEl.appendChild(dataEl);
for (int i=1; i <= numCols; i++) {

colName = resultmetadata.getColumnName(i);
//Get the column value
colVal = resultset.getString(i);

//Determine if the last column accessed was null
if (resultset.wasNull()) {
colVal = "";
}

dataEl = dataDoc.createElement(colName);

dataEl.appendChild(dataDoc.createTextNode(colVal));

rowEl.appendChild(dataEl);
}
//Add the row to the root element
dataRoot.appendChild(rowEl);
}
} catch (Exception e) {
Log.write(e.getMessage());
} finally {
Log.write(" db_to_xml: Closing connections...");

}

//Add the root element to the document
dataDoc.appendChild(dataRoot);


Node node1= mapRoot.getElementsByTagName("root").item(0);
Element newRootInfo =(Element)node1;
Log.write("After got newRootInfo ...");
//Retrieve the root and row information


String newRootName = newRootInfo.getAttribute("name");

String newRowName= newRootInfo.getAttribute("rowName");

NodeList newNodesMap = mapRoot.getElementsByTagName("element");

//Create the final root element with the name from the mapping file
Element newRootElement=null;

newRootElement = newDoc.createElement(newRootName);


NodeList oldRows = dataRoot.getElementsByTagName("row");
for (int i=0; i < oldRows.getLength(); i++){

//Retrieve each row in turn
Element thisRow = (Element)oldRows.item(i);

//Create the new row
Element newRow = newDoc.createElement(newRowName);

for (int j=0; j < newNodesMap.getLength(); j++) {

//For each node in the new mapping, retrieve the information
//First the new information...
Element thisElement = (Element)newNodesMap.item(j);
String newElementName = thisElement.getAttribute("name");

//Then the old information
Element oldElement = (Element)thisElement.getElementsByTagName("content").item(0);
String oldField = oldElement.getFirstChild().getNodeValue();


//Get the original values based on the mapping information
Element oldValueElement = (Element)thisRow.getElementsByTagName(oldField).item(0);
String oldValue = oldValueElement.getFirstChild().getNodeValue();


Element newElement = newDoc.createElement(newElementName);
newElement.appendChild(newDoc.createTextNode(oldValue));


NodeList newAttributes = thisElement.getElementsByTagName("attribute");
for (int k=0; k < newAttributes.getLength(); k++) {
//Get the mapping information
Element thisAttribute = (Element)newAttributes.item(k);
String oldAttributeField = thisAttribute.getFirstChild().getNodeValue();
String newAttributeName = thisAttribute.getAttribute("name");

oldValueElement = (Element)thisRow.getElementsByTagName(oldAttributeField).item(0);
String oldAttributeValue = oldValueElement.getFirstChild().getNodeValue();


newElement.setAttribute(newAttributeName, oldAttributeValue);
}

//Add the new element to the new row
newRow.appendChild(newElement);
}
//Add the new row to the root
newRootElement.appendChild(newRow);
}
//Add the new root to the document
newDoc.appendChild(newRootElement);


//把生成的xml文档(newDoc)写到文件中(路径名为resultXml)
try{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
Properties properties = transformer.getOutputProperties();
properties.setProperty(OutputKeys.ENCODING, "GB2312");//ISO8859_1,GB2312,UTF-8
properties.setProperty(OutputKeys.METHOD, "xml");
properties.setProperty(OutputKeys.VERSION, "1.0");
properties.setProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperties(properties);

DOMSource source = new DOMSource(newDoc);

StreamResult result = new StreamResult(new java.io.File(resultXml));

transformer.transform(source, result);
//生成XML文件 完成
} catch (Exception e) {
System.out.println("XML file write:"+e.getMessage());
}
return recordNum;
}

 
JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号