??xml version="1.0" encoding="utf-8" standalone="yes"?>国产69精品久久久久9999人 ,中文字幕中文字幕在线一区,高h视频在线http://www.aygfsteel.com/bernieyoo/zh-cnFri, 18 Jul 2025 17:17:21 GMTFri, 18 Jul 2025 17:17:21 GMT60用dom4j建立,修改XML文,q解x式化输出和中文问题[转]http://www.aygfsteel.com/bernieyoo/archive/2007/05/11/116815.htmlBernie YooBernie YooFri, 11 May 2007 09:40:00 GMThttp://www.aygfsteel.com/bernieyoo/archive/2007/05/11/116815.htmlhttp://www.aygfsteel.com/bernieyoo/comments/116815.htmlhttp://www.aygfsteel.com/bernieyoo/archive/2007/05/11/116815.html#Feedback0http://www.aygfsteel.com/bernieyoo/comments/commentRss/116815.htmlhttp://www.aygfsteel.com/bernieyoo/services/trackbacks/116815.html
<books>
  
<!--This is a test for dom4j, holen, 2004.9.11-->
  
<book show="no">
       
<title>Dom4j Tutorials</title>
  
</book>
  
<book show="no">
       
<title>Lucene Studing</title>
  
</book>
  
<book show="no">
       
<title>Lucene in Action</title>
  
</book>
  
<owner>O'Reilly</owner>
</books>

--------------------------------
package com.holen.dom4j;

 

import java.io.File;

import java.io.FileWriter;

import java.util.Iterator;

import java.util.List;

 

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

 

/**

 * 
@author Holen Chen

 
*/

public class Dom4jDemo {

   

    
public Dom4jDemo() {

    }

   

    
/**

     * 建立一个XML文,文名由输入参数军_

     * 
@param filename 需建立的文件名

     * 
@return q回操作l果, 0表失? 1表成?br>
     
*/

    
public int createXMLFile(String filename){

       
/** q回操作l果, 0表失? 1表成?nbsp;*/

       
int returnValue = 0;

       
/** 建立document对象 */

        Document document 
= DocumentHelper.createDocument();

       
/** 建立XML文的根books */

        Element booksElement 
= document.addElement("books");

       
/** 加入一行注?nbsp;*/

        booksElement.addComment(
"This is a test for dom4j, holen, 2004.9.11");

       
/** 加入W一个book节点 */

        Element bookElement 
= booksElement.addElement("book");

       
/** 加入show参数内容 */

        bookElement.addAttribute(
"show","yes");

       
/** 加入title节点 */

        Element titleElement 
= bookElement.addElement("title");

       
/** 为title讄内容 */

        titleElement.setText(
"Dom4j Tutorials");

      

       
/** cM的完成后两个book */

        bookElement 
= booksElement.addElement("book");

        bookElement.addAttribute(
"show","yes");

        titleElement 
= bookElement.addElement("title");

        titleElement.setText(
"Lucene Studing");

        bookElement 
= booksElement.addElement("book");

        bookElement.addAttribute(
"show","no");

        titleElement 
= bookElement.addElement("title");

        titleElement.setText(
"Lucene in Action");

      

       
/** 加入owner节点 */

        Element ownerElement 
= booksElement.addElement("owner");

        ownerElement.setText(
"O'Reilly");

      

       
try{

           
/** document中的内容写入文g?nbsp;*/

           XMLWriter writer 
= new XMLWriter(new FileWriter(new File(filename)));

           writer.write(document);

           writer.close();

           
/** 执行成功,需q回1 */

           returnValue 
= 1;

        }
catch(Exception ex){

           ex.printStackTrace();

       }

              

        
return returnValue;

    }

   

    
/**

     * 修改XML文g中内?q另存ؓ一个新文g

     * 重点掌握dom4j中如何添加节?修改节点,删除节点

     * 
@param filename 修改对象文g

     * 
@param newfilename 修改后另存ؓ该文?br>
     * 
@return q回操作l果, 0表失? 1表成?br>
     
*/

    
public int ModiXMLFile(String filename,String newfilename){

       
int returnValue = 0;

       
try{

           SAXReader saxReader 
= new SAXReader();   

           Document document 
= saxReader.read(new File(filename));

           
/** 修改内容之一: 如果book节点中show参数的内容ؓyes,则修Ҏno */

           
/** 先用xpath查找对象 */

           List list 
= document.selectNodes("/books/book/@show" );   

           Iterator iter 
= list.iterator();

           
while(iter.hasNext()){

               Attribute attribute 
= (Attribute)iter.next();

               
if(attribute.getValue().equals("yes")){

                   attribute.setValue(
"no");

               }  

           }

          

           
/**

            * 修改内容之二: 把owner内Ҏ为Tshinghua

            * q在owner节点中加入date节点,date节点的内容ؓ2004-09-11,qؓdate节点d一个参数type

            
*/

           list 
= document.selectNodes("/books/owner" );

           iter 
= list.iterator();

           
if(iter.hasNext()){

               Element ownerElement 
= (Element)iter.next();

               ownerElement.setText(
"Tshinghua");

               Element dateElement 
= ownerElement.addElement("date");

               dateElement.setText(
"2004-09-11");

               dateElement.addAttribute(
"type","Gregorian calendar");

           }

          

           
/** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */

           list 
= document.selectNodes("/books/book");

           iter 
= list.iterator();

           
while(iter.hasNext()){

               Element bookElement 
= (Element)iter.next();

               Iterator iterator 
= bookElement.elementIterator("title");

               
while(iterator.hasNext()){

                   Element titleElement
=(Element)iterator.next();

                   
if(titleElement.getText().equals("Dom4j Tutorials")){

                      bookElement.remove(titleElement);

                  }

               }

           }          

          

           
try{

               
/** document中的内容写入文g?nbsp;*/

               XMLWriter writer 
= new XMLWriter(new FileWriter(new File(newfilename)));

               writer.write(document);

               writer.close();

               
/** 执行成功,需q回1 */

               returnValue 
= 1;

           }
catch(Exception ex){

               ex.printStackTrace();

           }

          

        }
catch(Exception ex){

           ex.printStackTrace();

       }

        
return returnValue;

    }

   

    
/**

     * 格式化XML文档,q解决中文问?br>
     * 
@param filename

     * 
@return

     
*/

    
public int formatXMLFile(String filename){

       
int returnValue = 0;

       
try{

           SAXReader saxReader 
= new SAXReader();   

           Document document 
= saxReader.read(new File(filename));

           XMLWriter output 
= null;

           
/** 格式化输?cdIE览一?nbsp;*/

           OutputFormat format 
= OutputFormat.createPrettyPrint();

           
/** 指定XML字符集编?nbsp;*/

           format.setEncoding(
"GBK");

           output 
= new XMLWriter(new FileWriter(new File(filename)),format);

           output.write(document);

           output.close();       

           
/** 执行成功,需q回1 */

           returnValue 
= 1;      

        }
catch(Exception ex){

           ex.printStackTrace();

       }

        
return returnValue;

    }

 

    
public static void main(String[] args) {

        Dom4jDemo temp 
= new Dom4jDemo();

        System.out.println(temp.createXMLFile(
"d://holen.xml"));

        System.out.println(temp.ModiXMLFile(
"d://holen.xml","d://holen2.xml"));

        System.out.println(temp.formatXMLFile(
"d://holen2.xml"));

    }

}

 

转自Qhttp://www.donews.net/holen/archive/2004/09/11/96062.aspx


Bernie Yoo 2007-05-11 17:40 发表评论
]]>
EMaker中让执行很久的程序会出现Loading画面 [转]http://www.aygfsteel.com/bernieyoo/archive/2007/03/28/107089.htmlBernie YooBernie YooWed, 28 Mar 2007 15:30:00 GMThttp://www.aygfsteel.com/bernieyoo/archive/2007/03/28/107089.htmlhttp://www.aygfsteel.com/bernieyoo/comments/107089.htmlhttp://www.aygfsteel.com/bernieyoo/archive/2007/03/28/107089.html#Feedback0http://www.aygfsteel.com/bernieyoo/comments/commentRss/107089.htmlhttp://www.aygfsteel.com/bernieyoo/services/trackbacks/107089.html 

        Thread t = new  Thread() {
            
public   void  run() {
                
try {
                    Thread.sleep(
100 );
                    showWait();
                     
                     
// your coding..

               }
  catch (Exception ex) {
                    javax.swing.JOptionPane.showMessageDialog(
null , " 发生错误:\n " + ex.getMessage());
                    ex.printStackTrace();
                    
return ;
                }

                stopWait();
            }

        }
;
        t.start();


Bernie Yoo 2007-03-28 23:30 发表评论
]]>
lEmakerd内嵌的Treehttp://www.aygfsteel.com/bernieyoo/archive/2007/03/09/102894.htmlBernie YooBernie YooFri, 09 Mar 2007 10:01:00 GMThttp://www.aygfsteel.com/bernieyoo/archive/2007/03/09/102894.htmlhttp://www.aygfsteel.com/bernieyoo/comments/102894.htmlhttp://www.aygfsteel.com/bernieyoo/archive/2007/03/09/102894.html#Feedback0http://www.aygfsteel.com/bernieyoo/comments/commentRss/102894.htmlhttp://www.aygfsteel.com/bernieyoo/services/trackbacks/102894.html阅读全文

Bernie Yoo 2007-03-09 18:01 发表评论
]]>
关pȝ数据库{化ؓxml文g的通用E序[转]http://www.aygfsteel.com/bernieyoo/archive/2007/01/08/92442.htmlBernie YooBernie YooMon, 08 Jan 2007 10:24:00 GMThttp://www.aygfsteel.com/bernieyoo/archive/2007/01/08/92442.htmlhttp://www.aygfsteel.com/bernieyoo/comments/92442.htmlhttp://www.aygfsteel.com/bernieyoo/archive/2007/01/08/92442.html#Feedback2http://www.aygfsteel.com/bernieyoo/comments/commentRss/92442.htmlhttp://www.aygfsteel.com/bernieyoo/services/trackbacks/92442.html阅读全文

Bernie Yoo 2007-01-08 18:24 发表评论
]]>
新年新气?/title><link>http://www.aygfsteel.com/bernieyoo/archive/2007/01/01/91314.html</link><dc:creator>Bernie Yoo</dc:creator><author>Bernie Yoo</author><pubDate>Mon, 01 Jan 2007 13:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/bernieyoo/archive/2007/01/01/91314.html</guid><wfw:comment>http://www.aygfsteel.com/bernieyoo/comments/91314.html</wfw:comment><comments>http://www.aygfsteel.com/bernieyoo/archive/2007/01/01/91314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/bernieyoo/comments/commentRss/91314.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/bernieyoo/services/trackbacks/91314.html</trackback:ping><description><![CDATA[2007q第一天啊~~?br /><br />破天荒在休息日没有睡懒觉Q而且是没有其他事情要做的情况下?br /><br />前两天可累坏了,两天两夜没休息啊Q一直在睡觉Q结果今天早上睡不着了,不过ȝ是把烧退下去了,呵呵<img src ="http://www.aygfsteel.com/bernieyoo/aggbug/91314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/bernieyoo/" target="_blank">Bernie Yoo</a> 2007-01-01 21:06 <a href="http://www.aygfsteel.com/bernieyoo/archive/2007/01/01/91314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java-JSTLQJSP标准标签库) [转]http://www.aygfsteel.com/bernieyoo/archive/2006/12/27/90367.htmlBernie YooBernie YooWed, 27 Dec 2006 11:03:00 GMThttp://www.aygfsteel.com/bernieyoo/archive/2006/12/27/90367.htmlhttp://www.aygfsteel.com/bernieyoo/comments/90367.htmlhttp://www.aygfsteel.com/bernieyoo/archive/2006/12/27/90367.html#Feedback0http://www.aygfsteel.com/bernieyoo/comments/commentRss/90367.htmlhttp://www.aygfsteel.com/bernieyoo/services/trackbacks/90367.html 

前言

从JSP 1.1规范开始,JSP支持在JSP中用自定义标签了,自定义标{q泛使用造成了程序员重复定义Q这样就促成了JSTLQJavaServer Pages Standard Tag LibraryQ的诞生?br />因ؓ工作中需要用到JSTLQ但|上却苦于找不到有关JSTL的中文资料,所以就有了q篇文章?br />
JSTL?br />
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta组来维护的。JSTL只能q行在支持JSP1.2和Servlet2.3规范的容器上Q如tomcat 4.x。但是在卛_推出的JSP 2.0中是作ؓ标准支持的?br />JSTL目前的最新版本ؓ1.02Q最l发布版?.0。JSTL包含两个部分Q标{ֺ和ELQExpression Language表达式语aQ语a。标{ֺ目前支持四种标签Q?标签 URI 前缀 CZ
Core http://java.sun.com/jstl/core c <c:tagname ...>
XML processing http://java.sun.com/jstl/xml x <x:tagname ...>
I18N capable formatting http://java.sun.com/jstl/fmt fmt <fmt:tagname ...>
Database access (SQL) http://java.sun.com/jstl/sql sql <sql:tagname ...>


Core支持JSP中的一些基本的操作Q?br />XML processing支持XML文的处理;
I18N capable formatting支持对JSP面的国际化Q?br />Database access (SQL)支持JSPҎ据库的操作?br />
׃本h水^有限Q本文仅介绍Core标签Q如有兴,可一h讨其它三U标{使用与扩充?br />
EL语言介绍

EL语言是JSTL输出Q输入)一个JAVA表达式的表示形式?br />在JSTL中,EL语言只能在属性g使用。EL语言只能通过建立表达?{exp1}来进行调用。在属性g使用表达式有三种方式?br />
1?value属性包含一个表辑ּ
<some:tag value="${expr}"/>
在这U情况下Q表辑ּD计算出来q根据类型{换规则赋值给value属性。比如:<c:out value="${username}" />中的${username}是一个ELQ它相当于JSP语句<%=request.getAttribute(“username?%>?lt;%=session.getAttribute(“username?%>

2?value属性包含一个或多个属性,q些属性被文本分割或围l?br /><some:tag value="some${expr}${expr}text${expr}"/>
在这U情况下Q表辑ּ从左到右q行计算Qƈ结果{换ؓ字符串型Q根据类型{换规则)Qƈ结果赋值给value属?br />
3?value属性仅仅包含文?br /><some:tag value="sometext"/>
在这U情况下Q字W串型属性value根据类型{换规则{换ؓ标签所希望的类型?br />
EL语言的操作符
取得某个对象或集合中的属性?br />Z获得集合中的属性,EL支持以下两种操作
1Q?使用.操作W来获得有名字的属性。例如表辑ּ${user.username}表明对象user的username属?br />2Q?使用[]操作W来获得有名字或按数字排列的属性?br />表达?{user["username"]}和表辑ּ${user. username }含义相同
表达?{row[0]} 表明row集合的第一个条目?br />在这里user是一个类的对象,它的属性username必须W合标准JavaBean的规范,卛_Mؓusername属性定义相应的getter、setterҎ?br />
Empty操作W?I值检?

使用empty操作W来军_对象、集合或字符串变量是否ؓI或null。例如:
${empty param.username}
如果request的参数列表中的usernamegؓnullQ则表达式的gؓtrue?EL也可以直接用比较操作符与nullq行比较。如${param.firstname == null}?br />比较操作W?操作W?描述
==或eq 相等?
!=或ne 不等?
<或lt 于?
>或gt 大于?
<=或le 于{于?
>=或ge 大于{于?

数字q算W与逻辑q算W均与JAVA语言相同Q不再列表?br />
Core标签?br />
1?通用标签

<c:out>
<c:out>标签用于在JSP中显C数据,它有如下属????q?是否必须 ~省?
value 输出的信息,可以是EL表达式或帔R ??
default value为空时显CZ???
escapeXml 为true则避开Ҏ的xml字符??true



例子: 您的用户名是: <c:out value=?{user.username}?default=”guest?>

昄用户的用户名Q如为空则显Cguest
<c:out value="${sessionScope.username}"/>

指定从session中获取username的值显C;
<c:out value="${username}" />

昄username的|默认是从request(page)中取Q如果request中没有名为username的对象则从session中取Qsession中没有则从application(servletContext)中取Q如果没有取CQ何值则不显C?br />
<c:set>
<c:set>标签用于保存数据Q它有如下属????q?是否必须 ~省?
value 要保存的信息Q可以是EL表达式或帔R ?
target 需要修改属性的变量名,一般ؓjavabean的实???
property 需要修改的javabean属???
var 需要保存信息的变量 ??
scope 保存信息的变量的范围 ?page

如果指定了target属? 那么property属性也必须指定?br />例子Q?<c:set value="${test.testinfo}" var="test2" scope=”session?/>

test.testinfo的g存到session的test2中,其中test是一个javabean的实例,testinfo是test对象的属性?br /><c:set target="${cust.address}" property="city" value="${city}"/>

对象cust.address的city属性g存到变量city?br />
<c:remove>
<c:remove>标签用于删除数据Q它有如下属????q?是否必须 ~省?
var 要删除的变量 ??
scope 被删除变量的范围 ?所有范_包括page、request、session、application{?

例子: <c:remove var="test2" scope="session"/>

从session中删除test2变量?br />
2?控制标{?br />
<c:if>

<c:if>标签有如下属????q?是否必须 ~省?
test 需要评L条gQ相当于if (...){}语句中的条g ??
var 要求保存条gl果的变量名 ??
scope 保存条gl果的变量范??page


<c:choose>
q个标签不接受Q何属?br />
<c:when>
<c:when>标签有以下属????q?是否必须 ~省?
test 需要评L条g ??


<c:otherwise>
q个标签同样不接受Q何属?br />
例子Q?<c:if test="${user.wealthy}">
user.wealthy is true.
</c:if>

如果user.wealthy值trueQ则昄user.wealthy is true.

<c:choose>
<c:when test="${user.generous}">
user.generous is true.
</c:when>
<c:when test="${user.stingy}">
user.stingy is true.
</c:when>
<c:otherwise>
user.generous and user.stingy are false.
</c:otherwise>
</c:choose>

只有当条件user.generousq回值是trueӞ才显Cuser.generous is true.
只有当条件user.stingyq回值是trueӞ才显Cuser.stingy is true.
其它所有的情况Q即user.generous和user.stingy的值都不ؓtrueQ全部显Cuser.generous and user.stingy are false.

׃JSTL没有形如if (){…} else {…}的条件语句,所以这UŞ式的语句只能?lt;c:choose>?lt;c:when>?lt;c:otherwise>标签共同来完成了?br />
3?循环控制标签

<c:forEach>
<c:forEach>标签用于通用数据Q它有以下属????q?是否必须 ~省?
items q行循环的项???
begin 开始条??0
end l束条g ?集合中的最后一个项?
step 步长 ?1
var 代表当前目的变量名 ??
varStatus 昄循环状态的变量 ??


例子Q?<c:forEach items="${vectors}" var="vector">
<c:out value="${vector}"/>
</c:forEach>

相当于java语句 for (int i=0;i<vectors.size();i++) {
out.println(vectors.get(i));
}

在这里vectors是一个java.util.Vector对象Q里面存攄是String数据Qvector是当前@环条件下String对象。实际上q里的vectors可以是Q何实Cjava.util. Collection接口的对象?
<c:forEach begin="0" end="100" var="i" step="1">
count=<c:out value="${i}"/><br>
</c:forEach>


输出:
count=0
...
count=100

<c:forTokens>
<c:forTokens>标签有以下属????q?是否必须 ~省?
items q行循环的项???
delims 分割W???
begin 开始条??0
end l束条g ?集合中的最后一个项?
step 步长 ?1
var 代表当前目的变量名 ??
varStatus 昄循环状态的变量 ??


例子
<c:forTokens items="a:b:c:d" delims=":" var="token">
<c:out value="${token}"/>
</c:forTokens>


q个标签的用相当于java.util.StringTokenizercR在q里字W串a:b:c:d以:分开循环四次Qtoken是@环到当前分割到的字符丌Ӏ?br />
4.导入文g和URL

JSTL核心标签库支持?lt;c:import>来包含文Ӟ使用<c:url>来打印和格式化URL,使用<c:redirect>来重定向URL?br />
<c:import>
<c:import>标签包含另外一个页面代码到当前,它有以下属????q?是否必须 ~省?
url 需要导入页面的url ??
context /后跟本地web应用E序的名??当前应用E序
charEncoding 用于导入数据的字W集 ?ISO-8859-1
var 接受导入文本的变量名 ?page
scope 接受导入文本的变量的变量范围 ?1
varReader 用于接受导入文本的java.io.Reader变量???
varStatus 昄循环状态的变量 ??


<c:url>
<c:url>标签输出一个url地址Q它有以下属????q?是否必须 ~省?
url url地址 ??
context /后跟本地web应用E序的名??当前应用E序
charEncoding 用于导入数据的字W集 ?ISO-8859-1
var 接受处理q的url变量名,该变量存储url ?输出到页
scope 存储url的变量名的变量范??page


例子Q?
<c:import url="http://www.url.com/edit.js" var="newsfeed"/>


url http://www.url.com/edit.js包含到当前页的当前位|,q将url保存到newsfeed变量?
<a href="<c:url url="/index.jsp"/>"/>


在当前页的当前位|输?lt;a />Qhttp://www.yourname.com是当前页的所在的位置?br />

<c:redirect>
<c:redirect>标签请求重新定向到另外一个页面,它有以下属????q?是否必须 ~省?
url url地址 ??
context /后跟本地web应用E序的名??当前应用E序

例子Q?
<c:redirect url="http://www.yourname.com/login.jsp"/>


请求重新定向到http://www.yourname.com/login.jsp,相当于response.setRedirect("http://www.yourname.com/login.jsp");

<c:param>
<c:param>标签用来传递参数给一个重定向或包含页面,它有以下属????q?是否必须 ~省?
name 在request参数中设|的变量???
value 在request参数中设|的变量???

例子Q?
<c:redirect url="login.jsp">
<c:param name="id" value="888"/>
</c:redirect>


参?88以id为名字传递到login.jsp面Q相当于login.jsp?id=888


JSTL的优?br />1?在应用程序服务器之间提供了一致的接口Q最大程序地提高了WEB应用在各应用服务器之间的UL?br />2?化了JSP和WEB应用E序的开发?br />3?以一U统一的方式减了JSP中的scriptlet代码数量Q可以达到没有Q何scriptlet代码的程序。在我们公司的项目中是不允许有Q何的scriptlet代码出现在JSP中?br />4?允许JSP设计工具与WEB应用E序开发的q一步集成。相信不久就会有支持JSTL的IDE开发工具出现?br />
ȝ
上面介绍的仅仅是JSTL的一部分Q如果有旉我会l箋把其它部分写出来分nl大家。如果要使用JSTLQ则必须jstl.jar和standard.jar文g攑ֈclasspath中,如果你还需要用XML processing及Database access (SQL)标签Q还要将相关JAR文g攑ֈclasspath中,q些JAR文g全部存在于下载回来的zip文g中。这个zip文g可以从http://jakarta.apache.org/builds/jakarta-taglibs/releases/standard/jakarta-taglibs-standard-1.0.zip下蝲?br />
参考资?br />1?http://java.sun.com/products/jsp/jstl/
sun公司的JSTL站点
2?http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html
jakarta组的JSTL站点
3?http://www.manning.com/bayern/appendixA.pdf
JSTL的参考文,本文很多内容都是从这个PDF文g里翻译的?br />4?Q<J2EE~程指南Q?.3版)Q>
介绍了JSTL的雏形,wrox的书都是_֓?/p>

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1464467



Bernie Yoo 2006-12-27 19:03 发表评论
]]>
վ֩ģ壺 | | | | | Զ| ɽ| ɽ| µ| | ʯɽ| | ɽ| | ƽ| | ˹| | ֦| | մ| | | ƽ̶| | | | | | | | ̨| | ں| | | ˷| մ| | ײ| ֯|