yes but only for sql2k“select * from table for xml raw“??if other you can chaged follow: public static String record2xml(ResultSet records){ try{ ResultSetMetaData rsmd=records.getMetaData(); int _i=0; String _xmlRecord="<?xml version=\"1.0\" encoding=\"gb2312\" ?>"; _xmlRecord+="<root>"; while(records.next()){ _xmlRecord+="<data "; for(int i=1;i<rsmd.getColumnCount()+1;i++) { _xmlRecord+=" "; _xmlRecord+=rsmd.getColumnName(i); _xmlRecord+="=\""; String _te=records.getString(i); if(_te!=null) _te.trim(); _xmlRecord+=_te; _xmlRecord+="\" "; } _xmlRecord+=" />\n"; } _xmlRecord+="</root>"; return _xmlRecord; }catch(Exception e){ System.out.println("record2xml of InnerInvoke function is error:"+e); return ""; } }
不是很清楚,给你看看一个很简单的,XML解析程序:import java.awt.*; import java.io.*; import org.jdom.*; import org.jdom.output.XMLOutputter; import java.util.ArrayList;public class Test { public static void main(String args[]) throws IOException { Test test = new Test(); String request=test.getReaderDetails(); System.out.println(request);
try{
ResultSetMetaData rsmd=records.getMetaData();
int _i=0;
String _xmlRecord="<?xml version=\"1.0\" encoding=\"gb2312\" ?>";
_xmlRecord+="<root>"; while(records.next()){
_xmlRecord+="<data ";
for(int i=1;i<rsmd.getColumnCount()+1;i++)
{
_xmlRecord+=" "; _xmlRecord+=rsmd.getColumnName(i); _xmlRecord+="=\""; String _te=records.getString(i);
if(_te!=null) _te.trim();
_xmlRecord+=_te; _xmlRecord+="\" ";
}
_xmlRecord+=" />\n";
}
_xmlRecord+="</root>";
return _xmlRecord;
}catch(Exception e){
System.out.println("record2xml of InnerInvoke function is error:"+e);
return "";
}
}
import java.io.*;
import org.jdom.*;
import org.jdom.output.XMLOutputter;
import java.util.ArrayList;public class Test
{
public static void main(String args[]) throws IOException
{
Test test = new Test();
String request=test.getReaderDetails();
System.out.println(request);
String requestInfo=test.getResponse(request);
System.out.println(requestInfo);
}
protected String getReaderDetails()
{
try
{
Element RequesterDetailsRoot = new Element("Request");
Attribute attribute = new Attribute("PROVIDERID","1");
ArrayList detailAttribute = new ArrayList();
detailAttribute.add(attribute);
RequesterDetailsRoot.setAttributes(detailAttribute);
RequesterDetailsRoot.addContent(new Element("CLIENTID").setText("1234"));
RequesterDetailsRoot.addContent(new Element("CLIENTNAME").setText("gaoxin"));
RequesterDetailsRoot.addContent(new Element("FILEID").setText("1"));
RequesterDetailsRoot.addContent(new Element("FILETITLE").setText("Thinking in Web service"));
Document requesterDetails = new Document(RequesterDetailsRoot);
XMLOutputter outputter = new XMLOutputter(" ",true);
return outputter.outputString(requesterDetails);
}
catch(Exception e)
{
e.printStackTrace(System.out);
return "Error";
}
}
protected String getReaderDetails()
{
try
{
Element RequesterDetailsRoot = new Element("Request");
Attribute attribute = new Attribute("PROVIDERID","1");
ArrayList detailAttribute = new ArrayList();
detailAttribute.add(attribute);
RequesterDetailsRoot.setAttributes(detailAttribute);
RequesterDetailsRoot.addContent(new Element("CLIENTID").setText("1234"));
RequesterDetailsRoot.addContent(new Element("CLIENTNAME").setText("gaoxin"));
RequesterDetailsRoot.addContent(new Element("FILEID").setText("1"));
RequesterDetailsRoot.addContent(new Element("FILETITLE").setText("Thinking in Web service"));
Document requesterDetails = new Document(RequesterDetailsRoot);
XMLOutputter outputter = new XMLOutputter(" ",true);
return outputter.outputString(requesterDetails);
}
catch(Exception e)
{
e.printStackTrace(System.out);
return "Error";
}
}
}
public static Element parseResult(ResultSet rs)package corecraft.db.xqy;import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.apache.log4j.Logger;import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;import corecraft.util.DBToolkit;
import corecraft.db.pool.DBManager;
import corecraft.db.xqy.pagination.Pagination;
import corecraft.config.CoreConfigFactory;import java.sql.*;/**
* Created by IntelliJ IDEA.
* User: Dickensi Wen
* Date: 2003-8-16
* Time: 19:26:50
* To change this template use Options | File Templates.
*/
public class XMLQuery {
private static DocumentBuilderFactory dbf = null;
private static DocumentBuilder builder = null;
private static org.dom4j.Document domTemplate = null;
private static DocumentFactory df = DocumentFactory.getInstance();
private static DOMReader domReader = new DOMReader();
private static Logger logger = Logger.getLogger(XMLQuery.class) ;
private static Pagination paginationCtrl = null; static {
try {
String strPgClass = CoreConfigFactory.getProperties("db.pagination") ;
logger.info("Parpare to initial Dom");
dbf = DocumentBuilderFactory.newInstance();
builder = dbf.newDocumentBuilder();
domTemplate = XMLQuery.createDom();
logger.info("Successed in initial Dom");
paginationCtrl = (Pagination)Class.forName(strPgClass).newInstance(); logger.info("Load Pagination " + paginationCtrl + " success."); } catch (Exception e) {
logger.error("Load dom error",e);
} } public static org.dom4j.Document createDom() {
try {
org.dom4j.Document doc = df.createDocument(df.createElement("data"));
return doc;
} catch (Exception e) {
logger.error("Error in create dom",e);
return null;
}
} static public Element query(String sql) {
Connection con = DBManager.getConnection();
Element oResult = null;
Statement st = null;
ResultSet rs = null;
try {
st = con.createStatement();
rs = st.executeQuery(sql);
} catch (Exception e) {
logger.error("Query failure: " + sql,e);
} oResult = parseResult(rs);
DBToolkit.close(rs);
DBToolkit.close(st);
DBToolkit.close(con);
return oResult;
} static public Element query(PreparedStatement ps) {
Element oResult = null;
ResultSet rs = null;
try {
rs = ps.executeQuery();
} catch (Exception e) {
logger.error("Query failed in prepared statement",e);
}
oResult = parseResult(rs);
DBToolkit.close(rs);
return oResult;
} public static Element parseResult(ResultSet rs){
org.dom4j.Document dom = (org.dom4j.Document) domTemplate.clone();
Element root = (Element) dom.selectSingleNode("//data");
Element currentElement = null;
Element tempElement = null;
try {
while (rs.next()) {
ResultSetMetaData rm = rs.getMetaData();
int length = rm.getColumnCount();
String tableName = null;
currentElement = root.addElement("tuple");
for (int i = 1; i <= length; i++) {
tempElement = df.createElement(rm.getColumnName(i).toUpperCase());
tempElement.setText(rs.getString(i) == null ? "" : rs.getString(i));
tableName = rm.getTableName(i);
if(tableName == null || tableName.equals("")){
tableName = "SYSTMEDEFAULT";
}else{
tableName = tableName.toUpperCase();
}
setChildNodeValue(currentElement, tempElement, tableName);
}
}
} catch (Exception e) {
logger.error(e);
}
return root;
}/**
* db operate insert and delete update method
* @param sql
* @return
*/
static public boolean execute(String sql) {
Connection con = DBManager.getConnection();
Statement st = null;
try {
st = con.createStatement();
st.execute(sql);
} catch (Exception e) {
logger.error("$$$$$$$$$$$Query failure: " + sql,e);
return false;
} finally {
DBToolkit.close(con);
}
return true;
} private static boolean setChildNodeValue(Element oEleNode, Element node, String childNodeName) {
if (oEleNode == null) {
return false;
}
try {
Element oChild = (Element) oEleNode.selectSingleNode(childNodeName); if (oChild == null) {
oChild = df.createElement(childNodeName);
oEleNode.add(oChild);
}
oChild.add(node);
} catch (Exception e) {
return false;
}
return true;
}
public static void main(String arg[]) {
//Outer.pl(XMLQuery.query("select * from jiveuser k1,jivemessage where k1.userid=jivemessage.userid limit 1,2 "));
//logger.info(XMLQuery.buildDom("<?xml version='1.0' encoding='gb2312'?><htllo>sdfd你好吗sf</htllo>").asXML());
}
}