bodong_chen  
Java Space
日历
<2005年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
统计
  • 随笔 - 11
  • 文章 - 3
  • 评论 - 2
  • 引用 - 0

导航

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

Log4j

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

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>

posted on 2005-11-11 14:54 bodong_chen 阅读(1108) 评论(0)  编辑  收藏 所属分类: XML

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © bodong_chen Powered by: 博客园 模板提供:沪江博客