﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-如是人生-文章分类-java学习</title><link>http://www.blogjava.net/yuxinqianshou/category/21708.html</link><description>java学习</description><language>zh-cn</language><lastBuildDate>Thu, 19 Apr 2007 03:13:38 GMT</lastBuildDate><pubDate>Thu, 19 Apr 2007 03:13:38 GMT</pubDate><ttl>60</ttl><item><title>JDBC---一种用于执行SQL的Java API</title><link>http://www.blogjava.net/yuxinqianshou/articles/111432.html</link><dc:creator>与心牵手</dc:creator><author>与心牵手</author><pubDate>Wed, 18 Apr 2007 16:12:00 GMT</pubDate><guid>http://www.blogjava.net/yuxinqianshou/articles/111432.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; JDBC是一种用于执行SQL的Java API，它本身是个商标名，但很多人把它认为是Java Database Connectivity(Java 数据库连接)的缩写。<br>&nbsp;&nbsp;&nbsp; JDBC是一组访问数据库的API集合，通过加载由数据库厂商所提供的驱动程序，可以与数据库建立连接。这样，就不必为访问不同的数据库而写不同的程序了，只需用一个JDBC API写一个程序就够了。而且是，JDBC技术对开发者屏蔽了一些细节问题，这样，程序员就不必去关心底层的实现技术了。另外，跟java一样，JDBC 对数据库的访问也具有平台无关性。<br>&nbsp;&nbsp;&nbsp; JDBC访问数据库的步骤:<br><br>&nbsp;&nbsp;&nbsp; 1.注册并加载驱动程序:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 驱动程序是数据厂商所提供的一个对外的接口来分辨所访问的是哪一种数据库.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们可以调用Class.forName()显示地加载驱动程序.方法如下(以MySql为例):<br>&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; Class.forName("org.gjt.mm.mysql.Driver");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; Class.forName()是一个静态方法,用于指示Java虚拟机动态的查找,加载和链接指定类(如果尚未加载).如果无法找到这个类,则抛出ClassNotFountException.<br><br>&nbsp;&nbsp;&nbsp; 2.创建连接:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp; 数据库连接是使用DriverManager对象的静态方法getConnection()建立的,方法如下:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  String url = "jdbc:mysql://127.0.0.1:3306/qq"; //127.0.0.1为连接地址,qq为数据库名<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; Connection  conn = DriverManager.getConnection(url, "root", "root"); <br>&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // "root", "root"为用户名和密码<br><br>&nbsp;&nbsp;&nbsp; 3.创建SQL语句对象:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp; SQL语句对象主要是用来执行SQL语句的,当建立了连接以后,便可以由Statement对象将SQL语句发送到DBMS.对SELECT语句,可使用executeQuery();对于创建或修改表的语句,使用executeUpdate();方法如下:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  Statement st = conn.createStatement();<br><br>&nbsp;&nbsp;&nbsp; 4.提交SQL语句:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  得到创建SQL语句对象后,我们就可以提交SQL语句了,方法如下:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; a.查询数据:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; ResultSet rs = st.executeQuery("select * from login"); //返回查询SQL语句所得到的ResultSet对象格式的结果集.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; b.添加数据:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; int i = st.executeUpdate( "insert into login values('zhang','123')");&nbsp; //这个方法返回值是一个整数,代表的是影响数据的行数.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; 我们也可以用Statement的子接口PreparedStatement来实现提交,而PreparedStatement的子接口CallableStatement则用于执行SQL存储过程.<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 5.显示结果:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  当执行查询语句时,SQL语句的执行结果存储在ResultSet对象中.我们可以使用Getxxx方法来检索数据.方法如下:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; while(rs.next()){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; String name = set.getString("name");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; String password = set.getString("password");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; }&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; 如果发送的SQL语句不是查询语句,则这一步将省略.<br><br>&nbsp;&nbsp;&nbsp; &nbsp; 6.关闭连接:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  当完成数据库操作后,需要将连接关闭.因为数据库连接需要消耗系统资源.一旦不需要使用的时候,就应该释放出来.这是程序员必须养成的良好的习惯.在关闭连接时,正确的顺序是:Result,Statement,Connection.语法如下:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; rs.close();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; st.cloe();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; conn.close();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 为确保所有的连接能够被关闭,应该把关闭语句写在finally块中,这样,不管操作数据库过程中是否发生异常,都能够将资源释放出来.<br><br>&nbsp;&nbsp;&nbsp; &nbsp; 连接其它的数据库步骤均相同,只需更改驱动程序即可.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  <br><br><br>  <img src ="http://www.blogjava.net/yuxinqianshou/aggbug/111432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yuxinqianshou/" target="_blank">与心牵手</a> 2007-04-19 00:12 <a href="http://www.blogjava.net/yuxinqianshou/articles/111432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM和SAX的XML解析</title><link>http://www.blogjava.net/yuxinqianshou/articles/111424.html</link><dc:creator>与心牵手</dc:creator><author>与心牵手</author><pubDate>Tue, 17 Apr 2007 15:33:00 GMT</pubDate><guid>http://www.blogjava.net/yuxinqianshou/articles/111424.html</guid><description><![CDATA[<table style="margin: 0pt; padding: 0pt; border-collapse: separate;" cellpadding="0" cellspacing="0" height="100%" width="100%">
    <tbody>
        <tr>
            <td style="background-repeat: no-repeat; background-position: right top;" background="http://blogteam.bokee.com/pub/neweditor/editor/images/paper/mtdyhtq/t_r.gif">&nbsp;&nbsp;&nbsp;&nbsp; 解析xml有四种方法：DOM，SAX，DOM4j，JDOM.<br>&nbsp;&nbsp;&nbsp;&nbsp; 我们主要学了两种：DOM和SAX.<br>&nbsp;&nbsp;&nbsp;&nbsp; DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件。各有各的好。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; DOM和SAX的不同：<br>&nbsp;&nbsp;&nbsp;&nbsp; 1. DOM是基于内存的，不管文件有多大，都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。而SAX是基于事件的。当某个事件被触发时，才获取相应的XML的部分数据，从而不管XML文件有多大，都只占用了少量的内存空间。<br>&nbsp;&nbsp;&nbsp;&nbsp; 2. DOM可以读取XML也可以向XML文件中插入数据，而SAX却只能对XML进行读取，而不能在文件中插入数据。这也是SAX的一个缺点。<br>&nbsp;&nbsp;&nbsp;&nbsp; 3.SAX的另一个缺点：DOM我们可以指定要访问的元素进行随机访问，而SAX则不行。SAX是从文档开始执行遍历的。并且只能遍历一次。也就是说我们不能随机的访问XML文件，只能从头到尾的将XML文件遍历一次（当然也可以中间截断遍历）。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; DOM和SAX对XML文件的解析：<br>&nbsp;&nbsp;&nbsp;&nbsp;
            1.&nbsp;
            在使用DOM解析XML时，我们首先需要通过DocumentBuilderFactory这个类得到一个工厂的API，使应用程序能够从XML文档获取
            生成对象树的解析器。通过此类的 newinstance()
            方法我们可以获得此类的一个新实例。然后通过创建DocumentBuilder的实例使其从XML文档中获取DOM文档实例。
            DocumentBuilder的实例我们可以通过DocumentBuilderFactory类的newDocumentBuilder()方法得
            到。之后就通过DocumentBuilder类的parse(InputStream
            is)方法将给定文件的内容解析为一个XML文档，并且返回一个新的DOM Document 对象。具体步骤如下：<br><br>&nbsp; &nbsp; &nbsp; &nbsp; File file = new File("D:\\编码\\xml\\domxml.xml");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DocumentBuilder db = dbf.newDocumentBuilder();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Document dt = db.parse(file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // TODO 自动生成 catch 块<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>这
            时我们就可以开始解析文档了。通过NodeList,Node分别可以得到节点列表和节点了。NodeList可以由Document对象的
            getElementsByTagName("元素名称");来得到你想得到的哪个元素的节点列表。由NodeList的item(整形参数)方法来得到
            节点。通过Node的getFirstChild().getNodeValue()方法可以得到文本节点值。方法如下：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NodeList nl = dt.getElementsByTagName("star");//star为一个元素名称<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node nd = nl.item(0);//得到节点列表 nl 的第一个节点。<br><br>此外我们可以通过循环来取得节点列表中所有的节点。<br>当一个元素有子元素时我们可以通过父节点列表取得子节点列表。方法如下：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NodeList nlF = dt.getElementsByTagName("star"); //star为一个元素名称<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node ndF = nl.item(0); //得到节点列表 nl 的第一个节点。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; nlF.getLength(); i ++)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Node ndF = nlF.item(i); //取得元素的所有节点<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NodeList nlC = ndF.getChildNodes(); //取得子元素的节点列表<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int j = 0; j &lt; nlC.getLength(); j ++)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Node ndC = nlC.item(j);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(ndC.getNodeType()==ndC.ELEMENT_NODE){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String str = ndC.getFirstChild().getNodeValue(); //取得文本节点<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(str); //打印出文本节点<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>/**
            注意*/
            由于通过父节点列表得到子节点列表而得到的子元素节点包含了空格所占有的节点，所以这里需要用if(ndC.getNodeType()==
            ndC.ELEMENT_NODE)来做判断是否取得的是元素节点（ndC.getNodeType()为节点类型，ndC.ELEMENT_NODE节
            点类型为元素节点（注：文本节点是元素节点的一个子节点））。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 2. 最常用的SAX解析器是JAXP。JAXP是作为javax.xml包提供的，包括SAX和DIM的Java接口以及Java XML解析器必须是实现的基本接口和类。通过继承DefaultHandle类实现此类方法则可以遍历XML文档：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void startDocument()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //接收文档开始的通知<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void endDocument()<br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; //接收文档结束的通知 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void startElement(String uri,String localName,String qName, Attributes attributes)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //接收元素开始的通知<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; void endElement(String uri,String localName, String qName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //接收元素结束的通知<br>&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; void characters(char[] ch,int start, int length)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //接收字符数据的通知<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 获取SAX解析器的方法和DOM相似。获取SAX解析器的方法如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXParserFactory spf = SAXParserFactory.newInstance(); //得到工厂的一个新实例<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SAXParser sp = spf.newSAXParser(); //得到SAXParser类的实例<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; File file = new File("E:\\yuxin_document\\xml\\mytest.xml"); //XML文件<br>&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SaxHandle handle = new SaxHandle(); //SaxHandle
            这是一个继承了DefaultHandle的实现了XML遍历
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的一个自定义的类<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sp.parse(file, handle); //解析一个XML文档<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (ParserConfigurationException e) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // TODO 自动生成 catch 块<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (SAXException e) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // TODO 自动生成 catch 块<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (IOException e) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // TODO 自动生成 catch 块<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; ** 为了能够清晰的显示出XML中的内容，我们还需要将解析后取得的内容显示在GUI上。一般用表格来实现。<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; SAX和DOM的合用<br>&nbsp;&nbsp;&nbsp;&nbsp; 我们可以用SAX来解析XML再用DOM来将解析后的数据写成一个XML文件.<br>&nbsp;&nbsp;&nbsp;&nbsp; 使用DOM创建一个XML文件的方法如下:<br>&nbsp;&nbsp;&nbsp; 首先,需要得到一个写入XML文件的Document对象:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Document doc = DocumentHelper.createDocument();<br>&nbsp;&nbsp;&nbsp; 然后就可以在这个文档中添加内容了,如:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Element root = doc.addElement("root");&nbsp; //写入一个根元素"root"<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Element el = root.addElement("子元素"); //在根元素中写入一个子元素<br><br>&nbsp;&nbsp;&nbsp; 当将所有信息写入文档后则可以将Document写入XML文件中了,方法如下:<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileWriter file = new FileWriter("D:\\doc.xml"); //得到一个文件输出流对象<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; document.write(file); //将文档内容写入文件中(document是上面所得到的Document<br>对象)<br>&nbsp;&nbsp;&nbsp; 这是一种简单的写入方式<br>&nbsp;&nbsp;&nbsp; 如果你想格式化XML文件则可以这样做:<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FileOutputStream fos = new FileOutputStream("D:\\doc.xml"); //<br><br>得到一个文件输出流对象<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; OutputFormat format = OutputFormat.createPrettyPrint();&nbsp; //得到OutputFormat<br><br>格式化类的对象<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; XMLWriter xw = new XMLWriter(fos,format);&nbsp; //得到XML输出流XMLWriter接口的一<br><br>个实例<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xw.write(doc);&nbsp; //将文档写入XML<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fos.close();&nbsp; //关闭输出流<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xw.close();<br>
            <table summary="" border="1" cellpadding="3" cellspacing="0" width="100%">
                <tbody>
                    <tr class="TableRowColor" bgcolor="white">
                        <td><br></td>
                    </tr>
                </tbody>
            </table>
            <dl><dd><br></dd></dl> <dl><dd><br></dd></dl></td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/yuxinqianshou/aggbug/111424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yuxinqianshou/" target="_blank">与心牵手</a> 2007-04-17 23:33 <a href="http://www.blogjava.net/yuxinqianshou/articles/111424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>