使用JDOM读写XML的方法(来自在路上blog)

 

使用JDOM读写XML的方法(来自在路上blog)
使用JDOM读写XML的方法:

1. 读
读XML有多种方法.最基本的方法如下:
<1>用SAXBuilder类构造一个实例,并创建一个文件:
// Build the document with SAX and Xerces, no validation
SAXBuilder builder = new SAXBuilder();
// Create the document
Document doc = builder.build(new File("d:\\data.xml");
<2>调用Element类中的众多方法获取信息:
一下是在JSP中递归获取XML文件中的元素的基本信息的函数:
public void printChildren(Element parentElement,JspWriter out) throws java.io.IOException
{
    List children = parentElement.getChildren();
if(children==null || children.size()==0)
return;
for(int i=0 ; i<children.size(); i++)
{
Element aChild = (Element)children.get(i);
out.print(aChild.getName()+":";
out.print(aChild.getText()+"<br>";
printChildren(aChild,out);
}
}
上例用到了getChildren(),getName(),getText()三个方法。更多的方法参见doc文档。

2. 写
<1> 创建文档
Document document=new Document(new Element("name of the root Element");//调用的是new Document(Element rootElement)的构造函数。
说明:
Document类:Document defines behavior for an XML Document,定义了文件级的各种操作。
Element类:Attribute defines behavior for an XML attribute。

<2>逐个逐层写入element
Element chileElement=new Element("name of a child Element";  //创建元素 生成JDOM树
document.getRootElement().addContent(chileElement);
说明:
这个过程主要调用了Element类的addContent(Element anElement)方法。

<3>输出成XML文件
XMLOutputter outp = new XMLOutputter();
outp.output(document, new FileOutputStream("d:\\data.xml"); //输出XML文档
说明:
这种方法得到的XML的格式很不好看,要得到层次明显的XML,可采用如下方法:
a. XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat()); //利用Format类

b. XMLOutputter outputter = new XMLOutputter("", false);//第一个参数代表缩进方式,第二个参数代表是否换行。

c. XMLOutputter outp = new XMLOutputter("",true,"GB2312";//支持中文的带换行和缩进的格式
outp.setTextTrim(true);
outp.output(doc, System.out);


附:读写XML的例程:
1. 读:jdomreadxml.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.List,java.sql.*,java.io.*,org.jdom.*,org.jdom.output.*,org.jdom.input.*"%>
<%!
public void printChildren(Element parentElement,JspWriter out) throws java.io.IOException
{
    List children = parentElement.getChildren();
if(children==null || children.size()==0)
return;
for(int i=0 ; i<children.size(); i++)
{
Element aChild = (Element)children.get(i);
out.print(aChild.getName()+":";
out.print(aChild.getText()+"<br>";
printChildren(aChild,out);
}
}
%>
<HTML>
<HEAD>
<TITLE>用JDOM实现数据库到XML的转换</TITLE>
</HEAD>
<BODY>
<%
// Build the document with SAX and Xerces, no validation
SAXBuilder builder = new SAXBuilder();
// Create the document
Document doc = builder.build(new File("d:\\data.xml");
Element rootElement = doc.getRootElement();
out.print("Elements go here:";
out.print("<br>";
printChildren(rootElement,out);
%>
</BODY>
</HTML>

2. 写:(从Access数据库中获取字段并写入)
jdomdbtoxml.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.sql.*,java.io.*,org.jdom.*,org.jdom.output.*"%>
<HTML>
<HEAD>
<TITLE>用JDOM实现数据库到XML的转换</TITLE>
</HEAD>
<BODY>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver";
java.sql.Connection conn = java.sql.DriverManager.getConnection("jdbc:odbc:students";
java.sql.Statement stmt = conn.createStatement();
String sql="select * from student";   //定义查询的SQL语句
ResultSet rs=stmt.executeQuery(sql);   //执行查询
Document document=new Document(new Element("student_list");//创建文档
java.sql.ResultSetMetaData rsmd = rs.getMetaData();  //获取字段名
int numberOfColumns = rsmd.getColumnCount(); //获取字段数
int i=0;
while(rs.next()){ //将查询结果取出
    Element element0=new Element("student";  //创建元素 生成JDOM树
    document.getRootElement().addContent(element0);
    for (i=1; i<=numberOfColumns;i++)
{
String date=new String(rs.getString(i)); //代码转换
Element element=new Element(rsmd.getColumnName(i)).setText(date);
element0.addContent(element);
}
}
rs.close();                            //关闭结果集
stmt.close();                       //关闭statement
conn.close();                      //关闭连接

XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat());
outp.output(document, new FileOutputStream("d:\\data.xml"); //输出XML文档
out.print("XML 文档生成完毕!";
%>
</BODY>
</HTML>


以上内容来自http://www.blogcn.com/user34/dirkchen/blog/26117394.html非常感谢!

 

你可能感兴趣的:(java,sql,xml,jsp,Blog)