<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaChen on JavaXML</title>
	<atom:link href="http://www.javachen.com/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javachen.com</link>
	<description>Just some sharing about Java open source and life</description>
	<lastBuildDate>Fri, 03 Feb 2012 03:33:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>DhtmlxGrid Quick Start Guide</title>
		<link>http://www.javachen.com/2011/07/dhtmlxgrid-quick-start-guide/</link>
		<comments>http://www.javachen.com/2011/07/dhtmlxgrid-quick-start-guide/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 13:28:59 +0000</pubDate>
		<dc:creator>JavaChen</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[DhtmlxGrid]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.javachen.com/?p=2217</guid>
		<description><![CDATA[说明:本文来源于http://dhtmlx.com/docs/products/dhtmlxGrid/，本人对其进行翻译整理成下文，贴出此文，紧供分享。 dhtmlxGrid是一个拥有强大的数据绑定、优秀的大数据展示性能并支持ajax的JavaScript表格控件。该组件易于使用并通过富客户端的API提供了很大的扩展性。dhtmlxGrid支持不同的数据源（XML, JSON, CSV, JavaScript 数组和HTML表格），如果需要的话，还可以从自定义的xml中加载数据。 跨浏览器 使用JavaScript API进行控制 Ajax支持 简单的JavaScript 或者XML 配置 与HTML集成 内建过滤、排序、查询、分组功能 表格 footer/header自动计算 行内编辑 准备使用大数据集解决方案：分页，动态加载，智能渲染 序列化为XML或CSV 从 XML或CSV加载 列锁定 剪贴板支持 简单的客户端到服务器端配置 (使用 dhtmlxConnector, 可用于 PHP, Java, .NET, ColdFusion) 支持子表格 列拖拽和移动 行或列拖拽 dhtmlxTree PRO Edition支持拖拽 可以创建一个编辑器或是列格式化 (使用 eXcell – 继承自 cell 对象) 组合框，日历以及更多的预定义eXcells Cell支持数学方程式 不同的键盘映射 简单的CSS风格或是预定义的皮肤 对于rows/entire grid不可见的数据块 (用户数据) 客户端排序(string, integer, date, [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="extjs换肤" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fextjs_change_skins%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10383375.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">extjs换肤</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="jQuery中的正则表达式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F08%2Fregex-in-jquery%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10379741.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">jQuery中的正则表达式</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JavaScript模态窗口和非模态窗口" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2011%2F08%2Fjavascript-modelessdialog-and-modaldialog%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/08/07/21460805.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JavaScript模态窗口和非模态窗口</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="在eclipse中构建Pentaho BI Server工程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2011%2F09%2Fbuild-pentaho-bi-server-source-code-in-eclipse%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://p.blog.csdn.net/images/p_blog_csdn_net/lihaifeng555/EntryImages/20090911/%25E6%2596%25B0%25E5%259B%25BE%25E7%2589%2587.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在eclipse中构建Pentaho BI Server工程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="js在线压缩" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F06%2Fjavascript-min-tools%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10380389.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">js在线压缩</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;"><strong>说明:</strong></span>本文来源于<a href="http://dhtmlx.com/docs/products/dhtmlxGrid/">http://dhtmlx.com/docs/products/dhtmlxGrid/</a>，本人对其进行翻译整理成下文，贴出此文，紧供分享。</p>
<p>dhtmlxGrid是一个拥有强大的数据绑定、优秀的大数据展示性能并支持ajax的JavaScript表格控件。该组件易于使用并通过富客户端的API提供了很大的扩展性。dhtmlxGrid支持不同的数据源（XML, JSON, CSV, JavaScript 数组和HTML表格），如果需要的话，还可以从自定义的xml中加载数据。</p>
<ul>
<li>跨浏览器</li>
<li>使用JavaScript API进行控制</li>
<li>Ajax支持</li>
<li>简单的JavaScript 或者XML 配置</li>
<li>与HTML集成</li>
<li>内建过滤、排序、查询、分组功能</li>
<li>表格 footer/header自动计算</li>
<li>行内编辑</li>
<li>准备使用大数据集解决方案：分页，动态加载，智能渲染</li>
<li>序列化为XML或CSV</li>
<li>从 XML或CSV加载</li>
<li>列锁定</li>
<li>剪贴板支持</li>
<li>简单的客户端到服务器端配置 (使用 dhtmlxConnector, 可用于 PHP, Java, .NET, ColdFusion)</li>
<li>支持子表格</li>
<li>列拖拽和移动</li>
<li>行或列拖拽</li>
<li>dhtmlxTree PRO Edition支持拖拽</li>
<li>可以创建一个编辑器或是列格式化 (使用 eXcell – 继承自 cell 对象)</li>
<li>组合框，日历以及更多的预定义eXcells</li>
<li>Cell支持数学方程式</li>
<li>不同的键盘映射</li>
<li>简单的CSS风格或是预定义的皮肤</li>
<li>对于rows/entire grid不可见的数据块 (用户数据)</li>
<li>客户端排序(string, integer, date, custom)</li>
<li>服务器端排序</li>
<li>广泛的事件处理</li>
</ul>
<h2><span id="more-2217"></span><br />
Step 1 – 引入文件</h2>
<pre escaped="true" lang="html4strict" line="1"> &lt;link rel="STYLESHEET" type="text/css" href="codebase/dhtmlxgrid.css"&gt;
    &lt;script src="codebase/dhtmlxcommon.js"&gt;&lt;/script&gt;
    &lt;script src="codebase/dhtmlxgrid.js"&gt;&lt;/script&gt;
    &lt;script src="codebase/dhtmlxgridcell.js"&gt;&lt;/script&gt;
    &lt;script&gt;
        //we'll write script commands here
    &lt;/script&gt;</pre>
<h2>Step 2 – 放置gird</h2>
<p>有两种方式在一个页面放置grid，这里减少最常用的方法：创建一个div并给id熟悉设置一个惟一值。例如：</p>
<pre escaped="true" lang="html4strict">  &lt;div id="mygrid_container" style="width:600px;height:150px;"&gt;&lt;/div&gt;</pre>
<p>下面初始化参数，首先定一个mygrid变量，然后定一个doInitGrid方法，方法内部进行mygrid初始化工作：</p>
<pre escaped="true" lang="html4strict"> var mygrid;
 function doInitGrid(){

 }</pre>
<p>doInitGrid方法会包括以下代码：<br />
o 使用dhtmlXGridObject构造方法创建一个基于我们之前创建的DIV的grid对象；<br />
o 设置grid图片路径。这个路径包括grid外观需要的所有图片。在大多数情况下该路径为“codebase/imgs/”. 该路径最后面的一个“/”很重要。 随便说一下，这个路径和你处理表格数据所使用的图片没有关系；<br />
o 使用setHeader 方法定义表头；<br />
o 使用setInitWidths (单位为像素) 或setInitWidthsP (单位为百分比)定义列宽。 使用*代表让列自动使用所有表格宽度；<br />
o 定义一个列的水平对其方式。 Numeric values is better to align right;<br />
o 使用setSkin方法设置皮肤；<br />
o 最好使用这些设置通过init方法初始化grid。更多的参数之后再讨论。目前，doInitGrid方法如下：</p>
<div class="note">mygrid = new dhtmlXGridObject(&#8216;mygrid_container&#8217;);<br />
mygrid.setImagePath(“codebase/imgs/”); //指定图片路径<br />
mygrid.setHeader(“Model,Qty,Price”); //设置表头显示<br />
grid.setInitWidths(“*,150,150&#8243;); //设置列的初始宽度<br />
grid.setColAlign(“left,right,right”); //设置列的水平对其方式<br />
mygrid.setSkin(“light”); //设置皮肤<br />
grid.init(); //显示调用初始化方法，必须的</div>
<p>现在需要做的是运行该方法，可以将该方法加入body的onload方法里或是使用jquery的方法。下面使用body的onload方法：</p>
<pre escaped="true" lang="html4strict">&lt;body onload="doInitGrid();"&gt;</pre>
<p>这样在该页面初始化之后会显示如下：</p>
<div class="pic"><img src="http://docs.dhtmlx.com/lib/exe/fetch.php?cache=&amp;media=dhtmlxgrid:step_2_last.png" alt="" /></div>
<p>说明：除了调用set方法之外，还可以如下风格定义：</p>
<pre escaped="true" lang="javascript" line="1">agrid = new dhtmlXGridObject({
		parent:"a_grid",
		image_path:"codebase/imgs",
		columns:[
			{ label: "Sales",           width:50, 	type:"ed" },
			{ label:["Book title",
				 "#text_filter"],   width:150, 	type:"ed" },
			{ label:["Author",
				 "#select_filter"], width:150, 	type:"ed" },
			{ label: "Price",       width:50, 	type:"ed" },
			{ label:"In store" , 	width:80, 	type:"ch" },
			{ label:"Shipping" , 	width:50, 	type:"ed" },
			{ label:"Bestseller" , 	width:50, 	type:"ed" },
			{ label:"Date" , 	width:50, 	type:"ed" }
		],

		xml:"data.xml"
	});</pre>
<h2>Step 3 – 填充数据</h2>
<p>你已经知道了dhtmlxGrid可以加载xml或cvs或json数据，这里主要演示dhtmlxGrid加载json数据。<br />
在上面的例子中每行有三列，故我们的json数据如下：</p>
<pre escaped="true" lang="json" line="1">{
     rows:[
    {
        id: "a",
        data: [Model 1, 100, 399]
},
{
id: "b",
        data: [Model 2, 50, 649]
},
{
    id: "c",
       data: [ Model 3, 70, 499]
}
]
}</pre>
<p>将上面存于data.json文件，然后在doInitGrid方法里调用以下方法：</p>
<pre escaped="true" lang="javascript">mygrid.load ("data.json"，,"json");</pre>
<p>这时候页面展示如下：</p>
<div class="pic"><img src="http://docs.dhtmlx.com/lib/exe/fetch.php?cache=&amp;media=dhtmlxgrid:step_3.png" alt="" /></div>
<h2>Step 4 – 客户端排序</h2>
<p>为了能够实习表格的客户端排序，必须调用grid的setColSorting（sortTypesStr）方法。sortTypesStr是一个类型列表，以逗号分隔。该类型值有以下四种：<br />
o str – 作为字符串排序<br />
o int &#8211; 以Integer值排序 (通常可以是任何数字);<br />
o date – 以日期排序<br />
o custom sorting –自定义的更加复杂的排序方式(for example to sort days of week).</p>
<p>接下来我们对上面的例子进行排序。上例中每行有三列，第一列为字符串，后两列为数字，故可以调用以下方法进行排序。注意，该方法应该在init方法之前执行。</p>
<pre escaped="true" lang="javascript">mygrid.setColSorting("str,int,int");</pre>
<p>这时候单击最后一列表头，结果如下：</p>
<div class="pic"><img src="http://docs.dhtmlx.com/lib/exe/fetch.php?media=dhtmlxgrid:step_4.png" alt="" /></div>
<h2>Step 5 – 单元格格式化和编辑</h2>
<p>Grid中使用单元格的编辑器（或是eXcells – 继承自 Cells, Cell 或 Columns types）来定义值的格式和编辑方式。你可以根据你的需要创建eXcells。</p>
<p>设定单元格的类型非常容易，其可以用一行代码定义。这里有一些常见的编辑器，如简单的编辑器代码为“ed”，多行编辑“txt”，只读单元格“ro”，复选框“ch”，价格的格式化“price”。<br />
默认情况下所有的列是“ro”，也可以使用以下方法类设置编辑类型：<br />
mygrid.setColTypes(“ed,ed,price”);</p>
<p>Excells格式化有以下几种：</p>
<div class="note"> link：超链接<br />
 img：图片<br />
 price：价格<br />
 dyn：动态行</div>
<p>Excell 复杂编辑器有以下几种：</p>
<div class="note"> cp：colorpicker<br />
 calck：允许调用grid.setNumberFormat的计算器<br />
 dhxCalendar：日历，日期格式可以通过grid.setDateFormat设置<br />
 dhxCalendarA：日历，日期格式可以通过grid.setDateFormat设置，单元格可以编辑<br />
 calendar：YUI Calendar<br />
 clist：多选组件</div>
<p>使用其他组件作为单元格编辑器</p>
<div class="note"> grid：使用dhtmlxgrid<br />
 stree ：使用dhtmlxtree<br />
 context：使用dhtmlxmenu<br />
 combo：使用dhtmlxCombo</div>
<p>Excells特别用途</p>
<div class="note">sub_row：允许单元格作为一个可展开的子单元格，就想查看明细一样。<br />
两个扩展<br />
o sub_row_ajax – 单元格数据被认为是ajax请求的url<br />
o sub_row_grid – 允许创建一个子表作为一个子行的内容</div>
<p>现在你可以双击或是F2进入编辑模式，你可以用tab键在单元格之间导航。</p>
<div class="pic"><img src="http://docs.dhtmlx.com/lib/exe/fetch.php?media=dhtmlxgrid:step_5.png" alt="" /></div>
<h2>Step 6 – 行操作方法</h2>
<pre escaped="true" lang="javascript" line="1">    function addRow(){
        var newId = (new Date()).valueOf()
        mygrid.addRow(newId,"",mygrid.getRowsNum())
        mygrid.selectRow(mygrid.getRowIndex(newId),false,false,true);
    }
    function removeRow(){
        var selId = mygrid.getSelectedId()
        mygrid.deleteRow(selId);
    }</pre>
<p>代码中addRow() 方法的一些说明：</p>
<div class="note">o 创建一个惟一值 (number of millisecond since 1970) 来作为row的标识；<br />
o 在最后一行后面添加一新行，该行有新的id，值为空；<br />
o 选中最近创建的行 (by index), 不掉用 On-Select事件，不掉用选中行之前事件并且聚焦到选中行(如果垂直滚动条存在，则滚动对应位置)。</div>
<p>代码中removeRow() 的一些说明（一行行的）:</p>
<div class="note">o 得到选中行id；<br />
o 删除指定行id的行</div>
<h2>Step 7 – 事件</h2>
<p>添加事件调用attachEvent 方法，如下行选中事件：</p>
<pre escaped="true" lang="javascript" line="1">    function doOnRowSelected(rowID,celInd){
        alert("Selected row ID is "+rowID+"\nUser clicked cell with index "+celInd);

    }
    mygrid.attachEvent("onRowSelect",doOnRowSelected);</pre>
<h2>Step 8 – Code</h2>
<p>最后的代码：</p>
<pre escaped="true" lang="html4strict" line="1">&lt;title&gt;dhtmlxGrid Sample Page&lt;/title&gt;
     &lt;link rel="STYLESHEET" type="text/css" href="codebase/dhtmlxgrid.css"&gt;
     &lt;script src="codebase/dhtmlxcommon.js"&gt;&lt;/script&gt;
     &lt;script src="codebase/dhtmlxgrid.js"&gt;&lt;/script&gt;
     &lt;script src="codebase/dhtmlxgridcell.js"&gt;&lt;/script&gt;

     &lt;script&gt;
      var mygrid;
      function doInitGrid(){
       mygrid = new dhtmlXGridObject('mygrid_container');
       mygrid.setImagePath("codebase/imgs/");
       mygrid.setHeader("Model,Qty,Price");
       mygrid.setInitWidths("*,150,150");
       mygrid.setColAlign("left,right,right")
       mygrid.setSkin("light");
       mygrid.setColSorting("str,int,int");
       mygrid.setColTypes("ed,ed,price");
       mygrid.attachEvent("onRowSelect",doOnRowSelected);
       mygrid.init();
       mygrid.load ("data.json","json");
      }

      function addRow(){
       var newId = (new Date()).valueOf()
       mygrid.addRow(newId,"",mygrid.getRowsNum())
       mygrid.selectRow(mygrid.getRowIndex(newId),false,false,true);
      }
      function removeRow(){
       var selId = mygrid.getSelectedId()
       mygrid.deleteRow(selId);
      }

      function doOnRowSelected(rowID,celInd){
       alert("Selected row ID is "+rowID+"\nUser clicked cell with index "+celInd);
      }

     &lt;/script&gt;

     &lt;body onload="doInitGrid()"&gt;
      &lt;div id="mygrid_container" style="width:600px;height:150px;"&gt;&lt;/div&gt;
     &lt;/body&gt;</pre>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="渐行渐远" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F07%2Ffurther-and-further%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://www.javachen.com/wp-content/uploads/2010/07/2010worldc-300x197.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">渐行渐远</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="模仿QQ空间的警告提示栏" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F03%2Fie-warn-like-qq-zone%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10382516.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">模仿QQ空间的警告提示栏</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Spring IOC学习笔记" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fspring-ioc-notebook%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10383135.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Spring IOC学习笔记</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JavaScript模态窗口和非模态窗口" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2011%2F08%2Fjavascript-showmodelessdialog-and%2F&from=http%3A%2F%2Fwww.javachen.com%2F2011%2F07%2Fdhtmlxgrid-quick-start-guide%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/08/07/21460805.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JavaScript模态窗口和非模态窗口</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up ]]></content:encoded>
			<wfw:commentRss>http://www.javachen.com/2011/07/dhtmlxgrid-quick-start-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You are my love</title>
		<link>http://www.javachen.com/2010/10/you-are-my-love/</link>
		<comments>http://www.javachen.com/2010/10/you-are-my-love/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 13:24:05 +0000</pubDate>
		<dc:creator>JavaChen</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Java Core]]></category>
		<category><![CDATA[JYAML]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[YAML]]></category>

		<guid isPermaLink="false">http://www.javachen.com/?p=1864</guid>
		<description><![CDATA[今天看nutz的源码，看到了yaml，觉得很新鲜，what is yaml？百度一下，从百科里找到了答案： 在小说《拜金女的恋爱方程式》中，YAML 是You are my love 的缩写。 YAML 来自YAML官方网站 (http://www.yaml.org/) 的定义: YAML是一种直观的能够被电脑识别的的数据数据序列化格式，他并且容易被人类阅读，容易和脚本语言交互的。换种说法，YAML是一种很简单的类似于 XML的数据描述语言，语法比XML简单很多。他在描述能够被转化成数组或hash的数据是很有用，例如: name: John Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age 12 在YAML里面，结构通过缩进来表示，连续的项目通过减号”-”来表示，map结构里面的key/value对用冒号”:”来分隔。YAML也有用来描述好几行相同结构的数据的缩写语法，数组用&#8217;[]&#8216;包括起来，hash用&#8217;{}&#8217;来包括。 原来，YAML是”YAML Ain&#8217;t Markup Language(YAML不是一种标记语言)”的缩写。这种格式大约是2001年出现的，现在为止已有多种语言的YAML解析器。YAML 试图用一种比 XML 更敏捷的方式，来完成 XML 所完成的任务。 YAML优缺点 YAML是一个递归着说“不”的名字，为什么不是XML呢？因为： YAML的可读性好。 YAML和脚本语言的交互性好。 YAML使用实现语言的数据类型。 YAML有一个一致的信息模型。 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Java Enumeration" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F03%2Fjava-enumeration%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Java Enumeration</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Java5中的注释Annotation" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fjava5-annotation%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Java5中的注释Annotation</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JAVA中IO流的分类" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F05%2Fjava_io%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JAVA中IO流的分类</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Java Native Method" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fjava-native-method%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Java Native Method</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="java 读取图片的 Exif 数据" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fjava-read-picture-exif-data%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">java 读取图片的 Exif 数据</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">今天看nutz的源码，看到了yaml，觉得很新鲜，what is yaml？百度一下，从百科里找到了答案： 在小说《拜金女的恋爱方程式》中，YAML 是You are my love 的缩写。</span></span></p>
<h3 style="color: blue;"><span style="font-family: Times New Roman,Times,serif;">YAML</span></h3>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;"> 来自YAML官方网站 (http://www.yaml.org/) 的定义: <span style="background-color: yellow;">YAML是一种直观的能够被电脑识别的的数据数据序列化格式，他并且容易被人类阅读，容易和脚本语言交互的。</span>换种说法，YAML是一种很简单的类似于 XML的数据描述语言，语法比XML简单很多。他在描述能够被转化成数组或hash的数据是很有用，例如:<span id="more-1864"></span></span></span></p>
<pre class="code">		<span style="font-family: Times New Roman,Times,serif;">
<span style="font-size: 14px;">name: John Smith
age: 37
spouse:
    name: Jane Smith
    age: 25
children:
    -   name: Jimmy Smith
        age: 15
    -   name: Jenny Smith
        age 12</span></span></pre>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="background-color: yellow;"><span style="font-size: 14px;">在YAML里面，结构通过缩进来表示，连续的项目通过减号”-”来表示，map结构里面的key/value对用冒号”:”来分隔。YAML也有用来描述好几行相同结构的数据的缩写语法，数组用&#8217;[]&#8216;包括起来，hash用&#8217;{}&#8217;来包括。</span></span></span></p>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">原来，YAML是”YAML Ain&#8217;t Markup Language(YAML不是一种标记语言)”的缩写。这种格式大约是2001年出现的，现在为止已有多种语言的YAML解析器。</span><em><span style="background-color: #00ff00;">YAML 试图用一种比 XML 更敏捷的方式，来完成 XML 所完成的任务。</span></em></span></p>
<h3 style="color: blue;"><span style="font-family: Times New Roman,Times,serif;">YAML优缺点</span></h3>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML是一个递归着说“不”的名字，为什么不是XML呢？因为：</span></span></p>
<ul>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML的可读性好。</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML和脚本语言的交互性好。</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML使用实现语言的数据类型。</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML有一个一致的信息模型。</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML易于实现。</span></span></li>
</ul>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">上面5条也就是XML不足的地方。同时，YAML也有XML的下列优点：</span></span></p>
<ul>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML可以基于流来处理；</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML表达能力强，扩展性好。</span></span></li>
</ul>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">总之，<span style="color: #0000ff;"><strong>YAML试图用一种比XML更敏捷的方式，来完成XML所完成的任务</strong></span>。</span></span></p>
<h3 style="color: blue;"><span style="font-family: Times New Roman,Times,serif;">YAML的多种实现</span></h3>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML已经有了不少实现,详细的实现列表参见<a href="http://www.yaml.org/download.html">http://www.yaml.org/download.html</a>。下面这一段来自该网页：</span></span></p>
<ul>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;"><a href="http://pyyaml.org/wiki/PyYAML"> YAML 1.1 for Python</a>, written by Kirill Simonov.</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;"><a href="http://rbyaml.rubyforge.org/">YAML 1.1 for Ruby</a>, written by Ola Bini (port of Kirill&#8217;s work).</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Toby Ho&#8217;s Java binding is <a href="http://jyaml.sourceforge.net/">Jyaml</a>.</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">WhyTheLuckyStiff&#8217;s multi-language (Ruby, Python, PHP, OCaml) implementation is <a href="http://whytheluckystiff.net/syck/"> here</a></span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Kirill Simonov&#8217;s Python binding for Syck is <a href="http://pyyaml.org/wiki/PySyck"> here</a>.</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Brian Ingerson&#8217;s Perl binding for Syck is <a href="http://search.cpan.org/%7Eingy/YAML-Parser-Syck-0.01/Syck.pm">here</a>.</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Slaven Rezic&#8217;s Javascript implementation is at <a href="http://sourceforge.net/projects/yaml-javascript"> http://sourceforge.net/projects/yaml-javascript</a>.</span></span></li>
</ul>
<h3 style="color: blue;"><span style="font-family: Times New Roman,Times,serif;">JYAML yaml的java实现</span></h3>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">JYaml（<a href="http://jyaml.sourceforge.net/">http://jyaml.sourceforge.net</a>）是YAML的Java实现。YAML使用实现语言的数据类型。JYaml支持的Java数据类型：</span></span></p>
<ul>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">原始数据和封装类（比如int，java.lang.Integer）</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">JavaBean兼容对象（Structure支持）</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Collection （sequence支持）</span></span>
<ul>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">List</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Set</span></span></li>
</ul>
</li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Map （map支持）</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Arrays （sequence支持）</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">BigInteger 和BigDecimal</span></span></li>
<li> <span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">Date</span></span></li>
</ul>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">如果你想了解更多，请去官网看看<a href="http://jyaml.sourceforge.net/">http://jyaml.sourceforge.net</a></span></span></p>
<h3 style="color: blue;"><span style="font-family: Times New Roman,Times,serif;">YAML的试用范围</span></h3>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">由于实现简单，解析成本很低，YAML特别适合在脚本语言中使用。列一下现有的语言现：Ruby，Java，Perl，Python，PHP，OCaml，JavaScript。除了Java，其他都是脚本语言.</span></span></p>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML比较适合做序列化。因为它是宿主语言数据类型直转的。</span></span></p>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。对ROR而言，这很自然，也很省事.</span></span></p>
<p><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">由于兼容性问题，不同语言间的数据流转建议现在不要用YAML.</span></span></p>
<h3 style="color: blue;"><span style="font-family: Times New Roman,Times,serif;">参考资料</span></h3>
<ol>
<li>
<ul>
<li><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">JYaml项目主页：<a href="http://jyaml.sourceforge.net/">http://jyaml.sourceforge.net</a></span></span></li>
<li><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">JYaml入门： <a href="http://jyaml.sourceforge.net/tutorial.html">http://jyaml.sourceforge.net/tutorial.htm</a></span></span></li>
<li><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">YAML主页： <a href="http://www.yaml.org/">http://www.yaml.org</a></span></span></li>
<li><span style="font-family: Times New Roman,Times,serif;"><span style="font-size: 14px;">IBM关于YAML的简介：<a href="http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/">http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/</a></span></span></li>
</ul>
</li>
</ol>
<ul></ul>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Java Enumeration" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F03%2Fjava-enumeration%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Java Enumeration</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Java5中的注释Annotation" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fjava5-annotation%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Java5中的注释Annotation</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JAVA中IO流的分类" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F05%2Fjava_io%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JAVA中IO流的分类</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Java Native Method" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fjava-native-method%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Java Native Method</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="java 读取图片的 Exif 数据" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fjava-read-picture-exif-data%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F10%2Fyou-are-my-love%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">java 读取图片的 Exif 数据</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>By the time  your rss reader get this post here is <strong> 1 </strong>comments ,Welcome you come to leave your opinion !]]></content:encoded>
			<wfw:commentRss>http://www.javachen.com/2010/10/you-are-my-love/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Commons-Digester read xml to JavaBean</title>
		<link>http://www.javachen.com/2010/04/commons-digester-read-xml-to-javabean/</link>
		<comments>http://www.javachen.com/2010/04/commons-digester-read-xml-to-javabean/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 15:43:36 +0000</pubDate>
		<dc:creator>JavaChen</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Digester]]></category>
		<category><![CDATA[JavaBean]]></category>
		<category><![CDATA[Open Sources]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.javachen.com/?p=1358</guid>
		<description><![CDATA[最近在做一个小项目，需要读取数据字典XML中的内容取出相应的配置信息，在前台用Extjs生成一个查询框架，刚开始我是自己利用dom的开源lib以SAX的方式读数据字典，生成相应的java对象，但总感觉自己写的读取方法不是很完美，所以想在网上找找更好的解决办法。百度一下，看到了 Commons-Digester这个开源的jar文件，Digester本来仅仅是Jakarta Struts中的一个工具，用于处理struts-config.xml配置文件，后来就独立出来用于解析XML文件。 Digester由”事件”驱动，通过调用预定义的规则操作对象栈，将XML文件转换为Java对象。工作原理如下: Digester底层采用SAX解析XML文件，所以很自然的，对象转换由”事件”驱动，即在识别出特定XML元素时(实际被细分为begin、 body、end、finish四个时点)，将执行特定的动作，比如创建特定的Java对象，或调用特定对象的方法等。此处的XML元素根据匹配模式 (matching pattern)识别，而相关操作由规则(rule)定义。在转换过程中，Digester维持了一个对象栈，可以看作对象转换的工作台，用来存放转换中生成的、或是为转换临时创建的Java对象。对输入XML文件作了一趟完整的扫描后，对象栈的栈顶元素即为目标对象。由于Digester屏蔽了SAX解析的细节，使用者仅需关注转换操作本身，大大简化了转换操作。 使用Digester，基本步骤如下: 1.创建Digester对象实例。 2.设置该Digester对象的配置属性(可选)。 3.将需要的初始对象 push到该Digester对象的对象栈上(可选)。 4.需要注册所有的XML元素匹配模式与处理规则之间的映射关系。 5.用 digester.parse()解析的XML文档对象，得到目标对象。 在了解了Digester的实现原理和解析方式，就寻找网上现成的例子，自己在电脑上实现了一遍，由于网上的例子大多都不详细，所以在测试的过程中不断出现一些异常，但又不知道问题出自哪里、如何解决 最后终于找到了一个比较详细的实例，呵呵 以下是一个测试方法，其它的代码没有贴出，如有需要可以告诉我： package com.javachen.xml.digester; import java.io.File; import java.io.IOException; import org.junit.Test; import org.xml.sax.SAXException; import org.apache.commons.digester.Digester; import static org.junit.Assert.*; public class DigesterTest { /** * 属性方式 */ @Test public void testOne() { Digester digester = new Digester(); // 设置不进行合法性验证 digester.setValidating(false); [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="在Dom4j中使用xpath解析xml" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fdom4j_xpath_for_xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Dom4j中使用xpath解析xml</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="用JDOM操作XML文件" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">用JDOM操作XML文件</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Xmappr开源项目研读" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Xmappr开源项目研读</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Ext读取xml文件生成动态表格和表单" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fext_readxml_in_bjsasc_wuzi%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10383851.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Ext读取xml文件生成动态表格和表单</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="How Velocity Works？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F03%2Fhow-velocity-works%25EF%25BC%259F%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">How Velocity Works？</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>最近在做一个小项目，需要读取数据字典XML中的内容取出相应的配置信息，在前台用Extjs生成一个查询框架，刚开始我是自己利用dom的开源lib以SAX的方式读数据字典，生成相应的java对象，但总感觉自己写的读取方法不是很完美，所以想在网上找找更好的解决办法。百度一下，看到了 Commons-Digester这个开源的jar文件，Digester本来仅仅是Jakarta Struts中的一个工具，用于处理struts-config.xml配置文件，后来就独立出来用于解析XML文件。</p>
<p>Digester由”事件”驱动，通过调用预定义的规则操作对象栈，将XML文件转换为Java对象。工作原理如下:<br />
Digester底层采用SAX解析XML文件，所以很自然的，对象转换由”事件”驱动，即在识别出特定XML元素时(实际被细分为begin、 body、end、finish四个时点)，将执行特定的动作，比如创建特定的Java对象，或调用特定对象的方法等。此处的XML元素根据匹配模式 (matching pattern)识别，而相关操作由规则(rule)定义。在转换过程中，Digester维持了一个对象栈，可以看作对象转换的工作台，用来存放转换中生成的、或是为转换临时创建的Java对象。对输入XML文件作了一趟完整的扫描后，对象栈的栈顶元素即为目标对象。由于Digester屏蔽了SAX解析的细节，使用者仅需关注转换操作本身，大大简化了转换操作。</p>
<p>使用Digester，基本步骤如下:<br />
1.创建Digester对象实例。<br />
2.设置该Digester对象的配置属性(可选)。<br />
3.将需要的初始对象 push到该Digester对象的对象栈上(可选)。<br />
4.需要注册所有的XML元素匹配模式与处理规则之间的映射关系。<br />
5.用 digester.parse()解析的XML文档对象，得到目标对象。</p>
<p>在了解了Digester的实现原理和解析方式，就寻找网上现成的例子，自己在电脑上实现了一遍，由于网上的例子大多都不详细，所以在测试的过程中不断出现一些异常，但又不知道问题出自哪里、如何解决 <img src='http://www.javachen.com/wp-includes/images/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /><br />
最后终于找到了一个比较详细的实例，呵呵<br />
以下是一个测试方法，其它的代码没有贴出，如有需要可以告诉我：</p>
<pre escaped="true" lang="java">
package com.javachen.xml.digester;

import java.io.File;
import java.io.IOException;
import org.junit.Test;
import org.xml.sax.SAXException;

import org.apache.commons.digester.Digester;

import static org.junit.Assert.*;

public class DigesterTest {

	/**
	 * 属性方式
	 */
	@Test
	public void testOne() {
		Digester digester = new Digester();
		// 设置不进行合法性验证
		digester.setValidating(false);
		// 当遇到&lt;teacher&gt;时创建一个Teacher对象，放入栈顶
		digester.addObjectCreate("teacher", Teacher.class);
		digester.addSetProperties("teacher");
		// 当遇到&lt;teacher&gt;的子元素&lt;student&gt;时创建一个Student对象，放入栈顶
		digester.addObjectCreate("teacher/student", Student.class);
		// 设置&lt;student&gt;的属性值，根据属性值调用相应的set方法
		digester.addSetProperties("teacher/student");
		// 当再次遇到&lt;student&gt;时创建一个Student对象，放入栈顶，
                //同时调用栈次顶的addStudent方法
		digester.addSetNext("teacher/student", "addStudent",
				"com.javachen.xml.digester.Student");
		try {
			Teacher teacher = (Teacher) digester.parse(new File(
					"src/com/javachen/xml/digester/student.xml"));
			assertEquals(8, teacher.getStudents().size());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 子标签方式(设置Property方式一)
	 */
	@Test
	public void testTwo() {
		Digester digester = new Digester();
		digester.setValidating(false);
		// 设置栈顶
		digester.push(new TeacherList());
		digester.addObjectCreate("teachers/teacher", Teacher.class);
		digester.addSetProperties("teachers/teacher");
		digester.addObjectCreate("teachers/teacher/student", Student.class);
//		digester.addSetProperties("teachers/teacher/student");
		// 子标签方式设置属性方法之一，第三个参数是第二个参数所指方法的参数个数
		digester.addCallMethod("teachers/teacher/student/name", "setName", 1);
		digester.addCallMethod("teachers/teacher/student/age", "setAge", 1);
		digester.addCallMethod("teachers/teacher/student/id", "setId", 1);
		digester.addSetNext("teachers/teacher/student", "addStudent",
				"com.javachen.xml.digester.Student");
		digester.addSetNext("teachers/teacher", "addTeachers",
				"com.javachen.xml.digester.Teacher");
		try {
			TeacherList teacher = (TeacherList) digester.parse(new File(
					"src/com/javachen/xml/digester/teacher.xml"));
			assertEquals(2, teacher.getTeachers().size());
			assertEquals("java", teacher.getTeachers().get(0).getCourse());
			assertEquals(8, teacher.getTeachers().get(0).getStudents().size());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 子标签方式(设置Property方式二)
	 */
	@Test
	public void testThree() {
		Digester digester = new Digester();
		digester.setValidating(false);
		// 设置栈顶
		digester.push(new TeacherList());
		digester.addObjectCreate("teachers/teacher", Teacher.class);
		digester.addSetProperties("teachers/teacher");
		digester.addObjectCreate("teachers/teacher/student", Student.class);
		// 子标签方式设置属性方法之二
		digester.addBeanPropertySetter("teachers/teacher/student/name");
		digester.addBeanPropertySetter("teachers/teacher/student/age");
		digester.addBeanPropertySetter("teachers/teacher/student/id");
		digester.addSetNext("teachers/teacher/student", "addStudent",
				"com.javachen.xml.digester.Student");
		digester.addSetNext("teachers/teacher", "addTeachers",
				"com.javachen.xml.digester.Teacher");
		try {

			TeacherList teacher = (TeacherList) digester.parse(new File(
					"src/com/javachen/xml/digester/teacher.xml"));
			assertEquals(2, teacher.getTeachers().size());
			assertEquals("java", teacher.getTeachers().get(0).getCourse());
			assertEquals(8, teacher.getTeachers().get(0).getStudents().size());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 子标签方式 (callMethod callParam方式)
	 */
	@Test
	public void testFour() {
		Digester digester = new Digester();
		digester.setValidating(false);
		digester.push(new TeacherList());
		digester.addObjectCreate("teachers/teacher", "com.javachen.xml.digester.Teacher");
		digester.addSetProperties("teachers/teacher");
		// 当&lt;student&gt;时调用栈顶元素(Teacher)的addStudents却并不执行，
               //等待addCallParam设置参数，3为参数个数，这里传入的参数是字符串。
		digester.addCallMethod("teachers/teacher/student", "addStudent", 3);
		digester.addCallParam("teachers/teacher/student/name", 0);
		digester.addCallParam("teachers/teacher/student/age", 1);
		// 这句之后即&lt;/student&gt;才调用addStudents方法，并且如果再次遇到&lt;student&gt;重复。
		digester.addCallParam("teachers/teacher/student/id", 2);
		digester.addSetNext("teachers/teacher", "addTeachers",
				"com.javachen.xml.digester.Teacher");
		try {
			TeacherList teacher = (TeacherList) digester.parse(new File(
					"src/com/javachen/xml/digester/teacher.xml"));
			assertEquals(2, teacher.getTeachers().size());
			assertEquals("java", teacher.getTeachers().get(0).getCourse());
			assertEquals(8, teacher.getTeachers().get(0).getStudents().size());
			assertEquals("李世民2", teacher.getTeachers().get(1).getStudents()
					.get(2).getName());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}
	}
}
</pre>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="在Dom4j中使用xpath解析xml" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fdom4j_xpath_for_xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Dom4j中使用xpath解析xml</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="用JDOM操作XML文件" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">用JDOM操作XML文件</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Xmappr开源项目研读" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Xmappr开源项目研读</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Ext读取xml文件生成动态表格和表单" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fext_readxml_in_bjsasc_wuzi%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10383851.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Ext读取xml文件生成动态表格和表单</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="How Velocity Works？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F03%2Fhow-velocity-works%25EF%25BC%259F%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">How Velocity Works？</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up ]]></content:encoded>
			<wfw:commentRss>http://www.javachen.com/2010/04/commons-digester-read-xml-to-javabean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xmappr开源项目研读</title>
		<link>http://www.javachen.com/2010/01/begin-to-study-xmappr-project/</link>
		<comments>http://www.javachen.com/2010/01/begin-to-study-xmappr-project/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 14:29:18 +0000</pubDate>
		<dc:creator>JavaChen</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[DOM4j]]></category>
		<category><![CDATA[JDOM]]></category>
		<category><![CDATA[Open Sources]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.javachen.com/?p=923</guid>
		<description><![CDATA[一个偶然的点击发现了一个使用纯Java编写的处理XML的类库，里面涉及了java底层的一些知识，包括反射、泛型、注释等等。决定从这个小框架的研究开始学习java jdk的底层知识。 这段转自网上，介绍了一些关于这个框架的实现机制： Xmappr是一个使用纯Java编写的处理XML的类库，Xmappr设计的目的是让开发者可以更轻松的通过Java程序操作XML。现在Java操作XML的类库十分多，最著名的莫过于JDOM和DOM4j了，这些都是元老级的XML操作框架了。那么Xmappr有什么优势呢？Xmappr不会是重复发明轮子？带着这些疑问，笔者访问了Xmappr网站。按照官方的说法，Xmappr是一个轻量级的Java XML框架，Xmappr采用将XML映射为Java类的方式处理XML文件，Xmappr会在映射的Java类上通过Java注释信息标识Java类与XML的映射关系，Xmappr可以标注XML命名空间，可以缓存没有被映射的元素，Xmappr还支持保存XML元素排序的功能，同时Xmappr很容易扩展，用户可以通过自定义转换器 (converters)的方式来扩展Xmappr，以增加需要的类型转换处理，最后Xmappr是线程安全的，这意味着Xmappr适用于各种苛刻的运行环境。当然Xmappr的体积可以说是Xmappr最大的特色了，Xmappr只有80kb的体积，并且不包含任何依赖关系，能做这这一点，Xmappr的作者的确是花了不少功夫的。最后Xmappr是以BSD许可方式发布。 主要特性： * 映射通过注释或外部配置实现 * 可以缓存未映射元素 * 保持XML元素顺序 * 可以自定义类型转换器 * 完全支持XML命名空间 * 线程安全（设计用于多线程使用） * 不包含任何依赖关系 * 整个类库大小只有80kb * 采用BSD许可 Xmappr下载地址： Xmappr 下载 Xmappr官方网址： Xmappr 网址 Here is no comments yet by the time your rss reader get this, Do you want to be the first commentor? Hurry up<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="在Dom4j中使用xpath解析xml" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fdom4j_xpath_for_xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Dom4j中使用xpath解析xml</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="用JDOM操作XML文件" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">用JDOM操作XML文件</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Web资源优化工具 wro4j" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F05%2Fwro4j-web-resource-optimizer-for-java%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Web资源优化工具 wro4j</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Log4j" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F11%2Fabout-log4j%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Log4j</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Commons-Digester read xml to JavaBean" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Commons-Digester read xml to JavaBean</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>一个偶然的点击发现了一个使用纯Java编写的处理XML的类库，里面涉及了java底层的一些知识，包括反射、泛型、注释等等。决定从这个小框架的研究开始学习java jdk的底层知识。<span id="more-923"></span><br />
这段转自网上，介绍了一些关于这个框架的实现机制：</p>
<blockquote><p>Xmappr是一个使用纯Java编写的处理XML的类库，Xmappr设计的目的是让开发者可以更轻松的通过Java程序操作XML。现在Java操作XML的类库十分多，最著名的莫过于JDOM和DOM4j了，这些都是元老级的XML操作框架了。那么Xmappr有什么优势呢？Xmappr不会是重复发明轮子？带着这些疑问，笔者访问了Xmappr网站。按照官方的说法，Xmappr是一个轻量级的Java XML框架，Xmappr采用将XML映射为Java类的方式处理XML文件，Xmappr会在映射的Java类上通过Java注释信息标识Java类与XML的映射关系，Xmappr可以标注XML命名空间，可以缓存没有被映射的元素，Xmappr还支持保存XML元素排序的功能，同时Xmappr很容易扩展，用户可以通过自定义转换器 (converters)的方式来扩展Xmappr，以增加需要的类型转换处理，最后Xmappr是线程安全的，这意味着Xmappr适用于各种苛刻的运行环境。当然Xmappr的体积可以说是Xmappr最大的特色了，Xmappr只有80kb的体积，并且不包含任何依赖关系，能做这这一点，Xmappr的作者的确是花了不少功夫的。最后Xmappr是以BSD许可方式发布。</p></blockquote>
<p>主要特性：</p>
<p>* 映射通过注释或外部配置实现<br />
* 可以缓存未映射元素<br />
* 保持XML元素顺序<br />
* 可以自定义类型转换器<br />
* 完全支持XML命名空间<br />
* 线程安全（设计用于多线程使用）<br />
* 不包含任何依赖关系<br />
* 整个类库大小只有80kb<br />
* 采用BSD许可<br />
<strong>Xmappr下载</strong>地址：</p>
<p><a href="http://xiexiejiao.cn/?r=http://code.google.com/p/xmappr/wiki/Downloads?tm=2">Xmappr 下载</a></p>
<p>Xmappr官方网址：</p>
<p><a href="http://xiexiejiao.cn/?r=http://code.google.com/p/xmappr/">Xmappr 网址</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="在Dom4j中使用xpath解析xml" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fdom4j_xpath_for_xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Dom4j中使用xpath解析xml</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="用JDOM操作XML文件" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">用JDOM操作XML文件</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Web资源优化工具 wro4j" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F05%2Fwro4j-web-resource-optimizer-for-java%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Web资源优化工具 wro4j</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Log4j" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F11%2Fabout-log4j%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Log4j</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Commons-Digester read xml to JavaBean" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F&from=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Commons-Digester read xml to JavaBean</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up ]]></content:encoded>
			<wfw:commentRss>http://www.javachen.com/2010/01/begin-to-study-xmappr-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用JDOM操作XML文件</title>
		<link>http://www.javachen.com/2009/12/jdom-dealwith-xml/</link>
		<comments>http://www.javachen.com/2009/12/jdom-dealwith-xml/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 05:10:07 +0000</pubDate>
		<dc:creator>JavaChen</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[JDOM]]></category>
		<category><![CDATA[Open Sources]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.javachen.com/?p=704</guid>
		<description><![CDATA[JDOM是一个开源项目，它基于树型结构，利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 Java + XML = JDOM ！ JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性（方法重载、集合概念以及映射），把SAX和DOM的功能有效地结合起来。 Jdom是用Java语言读、写、操作XML的新API函数。Jason Hunter 和 Brett McLaughlin公开发布了它的1.0版本。在直觉、简单和高效的前提下，这些API函数被最大限度的优化。在接下来的篇幅里将介绍怎么用Jdom去读写一个已经存在的XML文档。 在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。 JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来，以弥补DOM及SAX在实际应用当中的不足之处。 这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能，而对于DOM来说，JAVA程序员在使用时来用起来总觉得不太方便。 DOM的缺点主要是来自于由于Dom是一个接口定义语言（IDL）,它的任务是在不同语言实现中的一个最低的通用标准，并不是为JAVA特别设计的。 jdom组件操作xml的基本步骤 1.创建xml文件：首先首先需要在内存中构建一颗空的dom树（空树）；然后再创建起各种子节点，填充到dom树中；最后将dom数转换成xml文件。 a.通过dom解析器，构建空的dom树。 b.创建各种子节点，组装到dom树中 c.创建转换器工厂类。 d.构建转化器。 e.通过转换器将dom树转化成xml文件。 2.解析xml文件： a.通过SAXBuilder，创建dom解析器 b.通过dom解析器将xml文件转换成dom数 c.先从dom数中取出所有的子元素节点 d.从根元素中取出所有的子元素节点。 e.从子元素节点中取出属性节点和文本节点，获取相关数据。 JDOM 类说明 org.JDOM 这个包里的类是你解析xml文件后所要用到的所有数据类型。 Attribute CDATA Coment DocType Document Element EntityRef Namespace ProscessingInstruction Text org.JDOM.transform 在涉及xslt格式转换时应使用下面的2个类 JDOMSource JDOMResult org.JDOM.input 输入类，一般用于文档的创建工作 SAXBuilder [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="在Dom4j中使用xpath解析xml" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fdom4j_xpath_for_xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Dom4j中使用xpath解析xml</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Commons-Digester read xml to JavaBean" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Commons-Digester read xml to JavaBean</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Xmappr开源项目研读" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Xmappr开源项目研读</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Ext读取xml文件生成动态表格和表单" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fext_readxml_in_bjsasc_wuzi%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10383851.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Ext读取xml文件生成动态表格和表单</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="SAX解析XML的一点介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F12%2Fsome-tips-about-simple-api-for-xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">SAX解析XML的一点介绍</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>JDOM是一个开源项目，它基于树型结构，利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。</p>
<p><strong><span style="color: #333399;">Java + XML = JDOM ！</span></strong></p>
<p>JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性（方法重载、集合概念以及映射），把SAX和DOM的功能有效地结合起来。</p>
<p>Jdom是用Java语言读、写、操作XML的新API函数。Jason Hunter 和 Brett McLaughlin公开发布了它的1.0版本。在直觉、简单和高效的前提下，这些API函数被最大限度的优化。在接下来的篇幅里将介绍怎么用Jdom去读写一个已经存在的XML文档。</p>
<p><span id="more-704"></span> 在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。<br />
JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来，以弥补DOM及SAX在实际应用当中的不足之处。<br />
这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能，而对于DOM来说，JAVA程序员在使用时来用起来总觉得不太方便。</p>
<p>DOM的缺点主要是来自于由于Dom是一个接口定义语言（IDL）,它的任务是在不同语言实现中的一个最低的通用标准，并不是为JAVA特别设计的。</p>
<p><strong><span style="color: #333399;">jdom组件操作xml的基本步骤</span></strong></p>
<p>1.创建xml文件：首先首先需要在内存中构建一颗空的dom树（空树）；然后再创建起各种子节点，填充到dom树中；最后将dom数转换成xml文件。</p>
<p>a.通过dom解析器，构建空的dom树。<br />
b.创建各种子节点，组装到dom树中<br />
c.创建转换器工厂类。<br />
d.构建转化器。<br />
e.通过转换器将dom树转化成xml文件。</p>
<p>2.解析xml文件：</p>
<p>a.通过SAXBuilder，创建dom解析器<br />
b.通过dom解析器将xml文件转换成dom数<br />
c.先从dom数中取出所有的子元素节点<br />
d.从根元素中取出所有的子元素节点。<br />
e.从子元素节点中取出属性节点和文本节点，获取相关数据。</p>
<p><span style="color: #000000;"><strong><span style="color: #333399;">JDOM 类说明</span></strong></span></p>
<p>org.JDOM<br />
这个包里的类是你解析xml文件后所要用到的所有数据类型。<br />
Attribute<br />
CDATA<br />
Coment<br />
DocType<br />
Document<br />
Element<br />
EntityRef<br />
Namespace<br />
ProscessingInstruction<br />
Text</p>
<p>org.JDOM.transform<br />
在涉及xslt格式转换时应使用下面的2个类<br />
JDOMSource<br />
JDOMResult</p>
<p>org.JDOM.input<br />
输入类，一般用于文档的创建工作<br />
SAXBuilder<br />
DOMBuilder<br />
ResultSetBuilder</p>
<p>org.JDOM.output<br />
输出类，用于文档转换输出<br />
XMLOutputter<br />
SAXOutputter<br />
DomOutputter<br />
JTreeOutputter</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="在Dom4j中使用xpath解析xml" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fdom4j_xpath_for_xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Dom4j中使用xpath解析xml</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Commons-Digester read xml to JavaBean" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F04%2Fcommons-digester-read-xml-to-javabean%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Commons-Digester read xml to JavaBean</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Xmappr开源项目研读" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F01%2Fbegin-to-study-xmappr-project%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Xmappr开源项目研读</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Ext读取xml文件生成动态表格和表单" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2009%2F10%2Fext_readxml_in_bjsasc_wuzi%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/31/10383851.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Ext读取xml文件生成动态表格和表单</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="SAX解析XML的一点介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.javachen.com%2F2010%2F12%2Fsome-tips-about-simple-api-for-xml%2F&from=http%3A%2F%2Fwww.javachen.com%2F2009%2F12%2Fjdom-dealwith-xml%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">SAX解析XML的一点介绍</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up ]]></content:encoded>
			<wfw:commentRss>http://www.javachen.com/2009/12/jdom-dealwith-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.javachen.com/tag/xml/feed/ ) in 14.03596 seconds, on Feb 6th, 2012 at 2:24 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 6th, 2012 at 3:24 am UTC -->
