<?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>robertbao&#039;s website &#187; xml</title>
	<atom:link href="http://www.robertbao.com/post/tag/xml/feed" rel="self" type="application/rss+xml" />
	<link>http://www.robertbao.com</link>
	<description>robertbao的个人网站</description>
	<lastBuildDate>Sat, 24 Jul 2010 03:59:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dom4j使用中的几个问题</title>
		<link>http://www.robertbao.com/post/1124</link>
		<comments>http://www.robertbao.com/post/1124#comments</comments>
		<pubDate>Thu, 11 Jan 2007 09:31:00 +0000</pubDate>
		<dc:creator>robertbao</dc:creator>
				<category><![CDATA[WORK]]></category>
		<category><![CDATA[dom4j]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[在工作中使用Dom4j碰到的几个问题：
1. 写入文件的格式 
写入Xml文件的时候默认是全部内容写为一行，这个可以通过加入Format来解决：
OutputFormat format = OutputFormat.createPrettyPrint();
2. Xml中文问题
2.1 Xml最好设为UTF-8格式，为什么不设成GBK，我以前写过的：
format.setEncoding(&#8221;utf-8&#8243;);
2.2 不要用FileWriter输出双字节，改为FileOutputStream输出单字节：
XMLWriter output = new XMLWriter(new FileOutputStream(configFile), format);
3. CDATA类型文本输入
Element conTblOpr = rowElement.addElement(XmlDBConstants.CON_TBL_OPR);// 加入节点
DefaultCDATA conTblOprCdata = new DefaultCDATA(conTblOprField);// CDATA格式化
conTblOpr.add(conTblOprCdata );// 加入CDATA文本
Dom4j 里面已经内置了对CDATA类型文本的支持，不要硬编码去在文本两边加&#60;![CDATA[***]]&#62;。
相关文章

2007-01-08 &#8212; RobConsole项目主菜单开发记录 (1)
2005-11-09 &#8212; W3C发布新的XML方面的候选标准 (2)
2005-08-02 &#8212; 用JTidy转换html为xml (1)

]]></description>
			<content:encoded><![CDATA[<p>在工作中使用Dom4j碰到的几个问题：</p>
<p><strong>1. 写入文件的格式 </strong></p>
<p>写入Xml文件的时候默认是全部内容写为一行，这个可以通过加入Format来解决：</p>
<p><em>OutputFormat format = OutputFormat.createPrettyPrint();</em></p>
<p><strong>2. Xml中文问题</strong></p>
<p><strong>2.1</strong> Xml最好设为UTF-8格式，为什么不设成GBK，我以前写过的：</p>
<p><em>format.setEncoding(&#8221;utf-8&#8243;);</em></p>
<p><strong>2.2</strong> 不要用FileWriter输出双字节，改为FileOutputStream输出单字节：</p>
<p><em>XMLWriter output = new XMLWriter(new FileOutputStream(configFile), format);</em></p>
<p><strong>3. CDATA类型文本输入</strong></p>
<p><em>Element conTblOpr = rowElement.addElement(XmlDBConstants.CON_TBL_OPR);//</em> 加入节点</p>
<p><em>DefaultCDATA conTblOprCdata = new DefaultCDATA(conTblOprField);//</em> CDATA格式化</p>
<p><em>conTblOpr.add(conTblOprCdata );//</em> 加入CDATA文本</p>
<p>Dom4j 里面已经内置了对CDATA类型文本的支持，不要硬编码去在文本两边加&lt;![CDATA[***]]&gt;。</p>
<h3>相关文章</h3>
<ul class="related_post">
<li>2007-01-08 &#8212; <a href="http://www.robertbao.com/post/1106" title="RobConsole项目主菜单开发记录">RobConsole项目主菜单开发记录 (1)</a></li>
<li>2005-11-09 &#8212; <a href="http://www.robertbao.com/post/900" title="W3C发布新的XML方面的候选标准">W3C发布新的XML方面的候选标准 (2)</a></li>
<li>2005-08-02 &#8212; <a href="http://www.robertbao.com/post/725" title="用JTidy转换html为xml">用JTidy转换html为xml (1)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robertbao.com/post/1124/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RobConsole项目主菜单开发记录</title>
		<link>http://www.robertbao.com/post/1106</link>
		<comments>http://www.robertbao.com/post/1106#comments</comments>
		<pubDate>Mon, 08 Jan 2007 14:09:00 +0000</pubDate>
		<dc:creator>robertbao</dc:creator>
				<category><![CDATA[WORK]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[tree]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[1. 使用说明
开发模式下在Eclipse中启动Tomcat后，在浏览器地址栏输入：http://192.1.1.163:8080/RobConsole，进入项目主页。
标注：
1、RobConsole项目在开发模式下运行于Tomcat中，生产模式下运行于WebLogic中；
2、192.1.1.163为项目运行的服务器，8080为Tomcat默认端口，RobConsole为发布项目名。
出现下图画面：

输入操作员员工号和密码进行登录，后台进行一系列处理(如操作员权限判断、密码验证等)后，转入操作主页面：

整个页面采用框架式Frame设计，页面预置上下左右四个Frame，上部的Frame为项目描述，左部的Frame为登录的操作员可处理的交易列表，为树形结构表示，若点击为树节点的目录则展开该目录的下级菜单，若点击为树节点的叶子，则在右部的Frame中打开具体交易界面，如流水查询、报表服务等。下部的Frame为扩展预留，暂时未用。
标注：
1、左右框架的分隔符可以进行收缩和拖拉，便于使用；
2、左部框架节点的设计如同windows中的资源管理器。
2. 开发说明
2.1 目录结构
src代码存放路径：

BuildMenu-&#62;MenuTree-&#62;Menu：BuildMenu：返回生成的树字符串；MenuTree：获得treeElement；Menu：进行treeElement解析；

com.robertbao.tree.TreeUtil：主菜单初始化，在服务器启动时即一次性加载menutree.xml文件，不用每次读取解析该文件，提高了主菜单的响应性能。
xml和js文件存放路径：
menutree.xml：WebContent/WEB-INF目录下tree_maker.js：WebContent/page/resources/script目录下
页面文件存放路径：
menutreeloader.html：WebContent/page/html目录下
内容为：
&#60;meta http-equiv=&#8221;refresh&#8221; content=&#8221;0;url=../../trans/management/TreeView.do&#8221;&#62;
进行页面的跳转，转入TreeView.do中处理。
treeSuccess.ftl：WebContent/page/ftl/system目录下
由tree_maker.js对传入的${tree}进行处理，在页面上显示出操作员交易树集合。
2.2 开发流程
使用人员开发交易时，主菜单的部分只需对menutree.xml中的内容进行增加，开发时主要在这个文件里添加具体的交易：
&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&#62;&#60;menu id=&#8221;A&#8221; title=&#8221;RobConsole&#8221; tip=&#8221;RobConsole&#8221; txn=&#8221;" type=&#8221;text&#8221; url=&#8221;"target=&#8221;_self&#8221;&#62;&#60;subMenu&#62;&#60;menu id=&#8221;AA&#8221; title=&#8221;管理AA&#8221; tip=&#8221;管理AA&#8221; txn=&#8221;" type=&#8221;text&#8221;url=&#8221;" target=&#8221;main&#8221;&#62;&#60;subMenu&#62;&#60;menu id=&#8221;AAA&#8221; title=&#8221;管理AAA&#8221; tip=&#8221;管理AAA&#8221; txn=&#8221;"type=&#8221;text&#8221; url=&#8221;" target=&#8221;main&#8221;&#62;&#60;subMenu&#62;&#60;menu id=&#8221;AAAA&#8221; title=&#8221;管理AAAA&#8221; tip=&#8221;管理AAAA&#8221;txn=&#8221;10210300&#8243; type=&#8221;text&#8221; url=&#8221;../../trans/beginTrans.do?trans=/page/ftl/system/adminAAAA.ftl&#8221;target=&#8221;main&#8221; /&#62;&#60;menu id=&#8221;AAAB&#8221; title=&#8221;管理AAAB&#8221; tip=&#8221;管理AAAB&#8221;txn=&#8221;10210400&#8243; type=&#8221;text&#8221; url=&#8221;../../trans/beginTrans.do?trans=/page/ftl/system/adminAAAB.ftl&#8221;target=&#8221;main&#8221; /&#62;&#60;/subMenu&#62;&#60;/menu&#62;
id 菜单编号title 显示菜单项信息tip 显示菜单项鼠标提示信息type 默认为text，文本类型，暂时未用，用于扩展url 点击叶子节点后的链接页面target 默认为main，框架名称，暂时未用，用于扩展
说明：

最上层节点定义id为A，为RobConsole节点占用，不能修改。
menu节点中若有内容，需定义下一级subMenu节点，然后在其中再定义menu节点添加具体内容，逐层嵌套。
id只定义在menu中，subMenu中没有该属性的定义。
同一级中按A、B、C、D字母顺序排序添加。
id的定义仅供树节点产生父子兄弟关系使用，与具体交易业务无关。
txn的定义即为权限，通过权限表中获得操作员权限，与该xml中的内容进行比对，若有权限则展示相应主菜单内容；权限代码的组成为txn=&#8221;10210500&#8243;，六位交易码加两位交易子码。
所有的url均以../../trans/beginTrans.do?trans=/page/ftl/system/***.ftl形式写出，只是最后的ftl文件名和目录会根据不同交易有所不同，这样把所有的页面都纳入同样的session控制中。

以操作员1200012的权限集为AAAA/AAAB/AAAC/AAAD/AAAE/AABA/AABB等为例，在主菜单中只显示该操作员可以进行的交易，该操作员无权进行的交易不会在主菜单中显示出来，操作员也就无法做此种交易，这种在页面端就进行限制的方式不用发出交易后在服务器端再进行验证，节省了系统资源。
3. 名词解释
XML：XML是The Extensible Markup Language（可扩展标识语言）的简写。和HTML一样，XML同样来源于SGML，但XML是一种能定义其他语言的语言。 XML最初设计的目的是弥补HTML的不足，以强大的扩展性满足网络信息发布的需要，后来逐渐用于网络数据的转换和描述。
XHTML：XHTML是The Extensible HyperText Markup Language（可扩展超文本标识语言）的缩写。XML虽然数据转换能力强大，完全可以替代HTML，但面对成千上万已有的站点，直接采用XML还为时过早。因此，我们在HTML4.0的基础上，用XML的规则对其进行扩展，得到了XHTML。简单的说，建立XHTML的目的就是实现HTML向XML的过渡。
CSS：CSS是Cascading Style [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. 使用说明</strong></p>
<p>开发模式下在Eclipse中启动Tomcat后，在浏览器地址栏输入：http://192.1.1.163:8080/RobConsole，进入项目主页。</p>
<p><strong>标注：</strong></p>
<p>1、RobConsole项目在开发模式下运行于Tomcat中，生产模式下运行于WebLogic中；</p>
<p>2、192.1.1.163为项目运行的服务器，8080为Tomcat默认端口，RobConsole为发布项目名。</p>
<p>出现下图画面：</p>
<p><img src="http://www.robertbao.com/image/login.jpg" style="DISPLAY: inline" title="login.jpg" height="176" width="270" alt="login.jpg" border="0"/></p>
<p>输入操作员员工号和密码进行登录，后台进行一系列处理(如操作员权限判断、密码验证等)后，转入操作主页面：</p>
<p><img src="http://www.robertbao.com/image/robconsole.jpg" style="DISPLAY: inline; WIDTH: 674px; HEIGHT: 316px" title="robconsole.png" height="316" width="674" alt="robconsole.png" border="0" id="urn:zoundry:jid:robconsole.png"/></p>
<p>整个页面采用框架式Frame设计，页面预置上下左右四个Frame，上部的Frame为项目描述，左部的Frame为登录的操作员可处理的交易列表，为树形结构表示，若点击为树节点的目录则展开该目录的下级菜单，若点击为树节点的叶子，则在右部的Frame中打开具体交易界面，如流水查询、报表服务等。下部的Frame为扩展预留，暂时未用。</p>
<p><strong>标注：</strong></p>
<p>1、左右框架的分隔符可以进行收缩和拖拉，便于使用；</p>
<p>2、左部框架节点的设计如同windows中的资源管理器。</p>
<p><strong>2. 开发说明</strong></p>
<p>2.1 目录结构</p>
<p>src代码存放路径：</p>
<p><img src="http://www.robertbao.com/image/menutree.jpg" style="DISPLAY: inline" title="menutree.jpg" alt="menutree.jpg" border="0"/></p>
<p>BuildMenu-&gt;MenuTree-&gt;Menu：<br/>BuildMenu：返回生成的树字符串；<br/>MenuTree：获得treeElement；<br/>Menu：进行treeElement解析；</p>
<p><img src="http://www.robertbao.com/image/treeutil.jpg" style="DISPLAY: inline" title="treeutil.jpg" alt="treeutil.jpg" border="0"/></p>
<p>com.robertbao.tree.TreeUtil：主菜单初始化，在服务器启动时即一次性加载menutree.xml文件，不用每次读取解析该文件，提高了主菜单的响应性能。</p>
<p>xml和js文件存放路径：</p>
<p>menutree.xml：WebContent/WEB-INF目录下<br/>tree_maker.js：WebContent/page/resources/script目录下</p>
<p>页面文件存放路径：</p>
<p>menutreeloader.html：WebContent/page/html目录下</p>
<p>内容为：</p>
<p>&lt;meta http-equiv=&#8221;refresh&#8221; content=&#8221;0;url=../../trans/management/TreeView.do&#8221;&gt;</p>
<p>进行页面的跳转，转入TreeView.do中处理。</p>
<p>treeSuccess.ftl：WebContent/page/ftl/system目录下</p>
<p>由tree_maker.js对传入的${tree}进行处理，在页面上显示出操作员交易树集合。</p>
<p>2.2 开发流程</p>
<p>使用人员开发交易时，主菜单的部分只需对menutree.xml中的内容进行增加，开发时主要在这个文件里添加具体的交易：</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br/>&lt;menu id=&#8221;A&#8221; title=&#8221;RobConsole&#8221; tip=&#8221;RobConsole&#8221; txn=&#8221;" type=&#8221;text&#8221; url=&#8221;"<br/>target=&#8221;_self&#8221;&gt;<br/>&lt;subMenu&gt;<br/>&lt;menu id=&#8221;AA&#8221; title=&#8221;管理AA&#8221; tip=&#8221;管理AA&#8221; txn=&#8221;" type=&#8221;text&#8221;<br/>url=&#8221;" target=&#8221;main&#8221;&gt;<br/>&lt;subMenu&gt;<br/>&lt;menu id=&#8221;AAA&#8221; title=&#8221;管理AAA&#8221; tip=&#8221;管理AAA&#8221; txn=&#8221;"<br/>type=&#8221;text&#8221; url=&#8221;" target=&#8221;main&#8221;&gt;<br/>&lt;subMenu&gt;<br/>&lt;menu id=&#8221;AAAA&#8221; title=&#8221;管理AAAA&#8221; tip=&#8221;管理AAAA&#8221;<br/>txn=&#8221;10210300&#8243; type=&#8221;text&#8221; url=&#8221;../../trans/beginTrans.do?trans=/page/ftl/system/adminAAAA.ftl&#8221;<br/>target=&#8221;main&#8221; /&gt;<br/>&lt;menu id=&#8221;AAAB&#8221; title=&#8221;管理AAAB&#8221; tip=&#8221;管理AAAB&#8221;<br/>txn=&#8221;10210400&#8243; type=&#8221;text&#8221; url=&#8221;../../trans/beginTrans.do?trans=/page/ftl/system/adminAAAB.ftl&#8221;<br/>target=&#8221;main&#8221; /&gt;<br/>&lt;/subMenu&gt;<br/>&lt;/menu&gt;</p>
<p>id 菜单编号<br/>title 显示菜单项信息<br/>tip 显示菜单项鼠标提示信息<br/>type 默认为text，文本类型，暂时未用，用于扩展<br/>url 点击叶子节点后的链接页面<br/>target 默认为main，框架名称，暂时未用，用于扩展</p>
<p><strong>说明：</strong></p>
<ol>
<li>最上层节点定义id为A，为RobConsole节点占用，不能修改。</li>
<li>menu节点中若有内容，需定义下一级subMenu节点，然后在其中再定义menu节点添加具体内容，逐层嵌套。</li>
<li>id只定义在menu中，subMenu中没有该属性的定义。</li>
<li>同一级中按A、B、C、D字母顺序排序添加。</li>
<li>id的定义仅供树节点产生父子兄弟关系使用，与具体交易业务无关。</li>
<li>txn的定义即为权限，通过权限表中获得操作员权限，与该xml中的内容进行比对，若有权限则展示相应主菜单内容；权限代码的组成为txn=&#8221;10210500&#8243;，六位交易码加两位交易子码。</li>
<li>所有的url均以../../trans/beginTrans.do?trans=/page/ftl/system/***.ftl形式写出，只是最后的ftl文件名和目录会根据不同交易有所不同，这样把所有的页面都纳入同样的session控制中。</li>
</ol>
<p>以操作员1200012的权限集为AAAA/AAAB/AAAC/AAAD/AAAE/AABA/AABB等为例，在主菜单中只显示该操作员可以进行的交易，该操作员无权进行的交易不会在主菜单中显示出来，操作员也就无法做此种交易，这种在页面端就进行限制的方式不用发出交易后在服务器端再进行验证，节省了系统资源。</p>
<p><strong>3. 名词解释</strong></p>
<p>XML：XML是The Extensible Markup Language（可扩展标识语言）的简写。和HTML一样，XML同样来源于SGML，但XML是一种能定义其他语言的语言。 XML最初设计的目的是弥补HTML的不足，以强大的扩展性满足网络信息发布的需要，后来逐渐用于网络数据的转换和描述。</p>
<p>XHTML：XHTML是The Extensible HyperText Markup Language（可扩展超文本标识语言）的缩写。XML虽然数据转换能力强大，完全可以替代HTML，但面对成千上万已有的站点，直接采用XML还为时过早。因此，我们在HTML4.0的基础上，用XML的规则对其进行扩展，得到了XHTML。简单的说，建立XHTML的目的就是实现HTML向XML的过渡。</p>
<p>CSS：CSS是Cascading Style Sheets（层叠样式表）的缩写。W3C创建CSS标准的目的是以CSS取代HTML表格式布局、帧和其他的表现语言。纯CSS布局与结构式XHTML相结合能帮助设计师分离外观与结构，使站点的访问及维护更加容易。</p>
<p>DOM：DOM是Document Object Model（文档对象模型）的缩写。DOM是一种与浏览器、平台、语言的接口，使得你可以访问页面其他的标准组件。简单理解，DOM解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突，给予web设计师和开发者一个标准的方法，让他们来访问站点中的数据、脚本表现层对象。</p>
<h3>相关文章</h3>
<ul class="related_post">
<li>2007-01-11 &#8212; <a href="http://www.robertbao.com/post/1124" title="Dom4j使用中的几个问题">Dom4j使用中的几个问题 (4)</a></li>
<li>2005-11-09 &#8212; <a href="http://www.robertbao.com/post/900" title="W3C发布新的XML方面的候选标准">W3C发布新的XML方面的候选标准 (2)</a></li>
<li>2005-08-02 &#8212; <a href="http://www.robertbao.com/post/725" title="用JTidy转换html为xml">用JTidy转换html为xml (1)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robertbao.com/post/1106/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>W3C发布新的XML方面的候选标准</title>
		<link>http://www.robertbao.com/post/900</link>
		<comments>http://www.robertbao.com/post/900#comments</comments>
		<pubDate>Tue, 08 Nov 2005 23:25:47 +0000</pubDate>
		<dc:creator>robertbao</dc:creator>
				<category><![CDATA[WORK]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[W3C近日发布了一批XSLT，XML Query和XPath 2.0方面的候选标准。

XSLT and XQuery: 

XSL Transformations (XSLT) Version 2.0

XSLT 2.0 and XQuery 1.0 Serialization

XML Syntax for XQuery 1.0 (XQueryX) 


XQuery and XPath:

XQuery 1.0: An XML Query Language

XML Path Language (XPath) 2.0

XQuery 1.0 and XPath 2.0 Data Model (XDM)

XQuery 1.0 and XPath 2.0 Functions and Operators

XQuery 1.0 and XPath 2.0 Formal Semantics



相关文章

2009-01-25 &#8212; OperaTor&#8211;带Tor的浏览器 (1)
2007-04-03 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org" target="_blank">W3C</a>近日发布了一批XSLT，XML Query和XPath 2.0方面的候选标准。</p>
<ul>
<li>XSLT and XQuery: </p>
<ul>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xslt20-20051103/">XSL Transformations (XSLT) Version 2.0</a>
</li>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xslt-xquery-serialization-20051103/">XSLT 2.0 and XQuery 1.0 Serialization</a>
</li>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xqueryx-20051103/">XML Syntax for XQuery 1.0 (XQueryX)</a> </li>
</ul>
</li>
<li>XQuery and XPath:
<ul>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xquery-20051103/">XQuery 1.0: An XML Query Language</a>
</li>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xpath20-20051103/">XML Path Language (XPath) 2.0</a>
</li>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xpath-datamodel-20051103/">XQuery 1.0 and XPath 2.0 Data Model (XDM)</a>
</li>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xpath-functions-20051103/">XQuery 1.0 and XPath 2.0 Functions and Operators</a>
</li>
<li><a target="_blank" href="http://www.w3.org/TR/2005/CR-xquery-semantics-20051103/">XQuery 1.0 and XPath 2.0 Formal Semantics</a></li>
</ul>
</li>
</ul>
<h3>相关文章</h3>
<ul class="related_post">
<li>2009-01-25 &#8212; <a href="http://www.robertbao.com/post/1176" title="OperaTor&#8211;带Tor的浏览器">OperaTor&#8211;带Tor的浏览器 (1)</a></li>
<li>2007-04-03 &#8212; <a href="http://www.robertbao.com/post/1194" title="weblogic与httpd整合">weblogic与httpd整合 (0)</a></li>
<li>2007-01-11 &#8212; <a href="http://www.robertbao.com/post/1124" title="Dom4j使用中的几个问题">Dom4j使用中的几个问题 (4)</a></li>
<li>2007-01-08 &#8212; <a href="http://www.robertbao.com/post/1106" title="RobConsole项目主菜单开发记录">RobConsole项目主菜单开发记录 (1)</a></li>
<li>2006-08-18 &#8212; <a href="http://www.robertbao.com/post/1060" title="Web2.0样式的logo">Web2.0样式的logo (2)</a></li>
<li>2006-05-18 &#8212; <a href="http://www.robertbao.com/post/1050" title="Google Web Toolkit发布">Google Web Toolkit发布 (4)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robertbao.com/post/900/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用JTidy转换html为xml</title>
		<link>http://www.robertbao.com/post/725</link>
		<comments>http://www.robertbao.com/post/725#comments</comments>
		<pubDate>Tue, 02 Aug 2005 00:18:04 +0000</pubDate>
		<dc:creator>robertbao</dc:creator>
				<category><![CDATA[WORK]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[最近工作中要从网页提取信息，打算先把html转换成标准的xml格式，然后方便使用dom4j进行后续的解析，试用了不少现成的类库，JTidy、NekoHTML、HTML Parser、Jericho，最后还是使用了JTidy。
只是r8 snapshot还只是一个nightly builds，前面的r7版更已经是4年前的事了，这个项目就这样荒废了？可能是参与的人太少又或者是觉得已经成熟？
JTidy提供了一个语法检查器和标签补偿器，能够对各种乱七八糟的html进行修复，使之符合xhtml标准。
r8 snapshot相对于r7改变了一些参数的设置方法，特别是在字符编码处理上，用setInputEncoding和setOutputEncoding方法来确定输入和输出文件的字符编码，可以使用任何有效的Java编码名称，这就比以前的强多了。
总体上解析的结果还不错，只是有些地方还需要对生成文件进行手工调整，或者自己再编一段代码处理一下，已经不是大问题了。
一些常用的参数设置：
setAltText(java.lang.String altText)&#160;加上默认的alt属性值setBreakBeforeBR(boolean breakBeforeBR) 在换行&#60;br /&#62;之前加一空行setCharEncoding(int charencoding) 已废弃setConfigurationFromFile(java.lang.String filename) 从文件中读取配置信息setConfigurationFromProps(java.util.Properties props) 从properties中读取配置信息setErrfile(java.lang.String errfile) 错误输出文件setFixBackslash(boolean fixBackslash) URL中用/取代\setForceOutput(boolean forceOutput) 不管生成的xml是否有错，强制输出。setHideComments(boolean hideComments)&#160;结果中不生成注释setInputEncoding(java.lang.String encoding) 输入编码setLogicalEmphasis(boolean logicalEmphasis) 用em替代i，strong替代bsetMessageListener(TidyMessageListener listener) 加入一个TidyMessageListener监听器setOnlyErrors(boolean onlyErrors)&#160;只输出错误文件setOutputEncoding(java.lang.String encoding)&#160;输出编码setPrintBodyOnly(boolean bodyOnly)&#160;只输出body中的部分setRepeatedAttributes(int repeatedAttributes)&#160;重复属性的处理setSpaces(int spaces)&#160;每行前的空格数，就是缩进格式setTidyMark(boolean tidyMark)&#160;是否生成tidy标记setTrimEmptyElements(boolean trimEmpty)&#160;不输出空元素setUpperCaseAttrs(boolean upperCaseAttrs)&#160;属性变大写setUpperCaseTags(boolean upperCaseTags)&#160;标记变大写setWraplen(int wraplen)&#160;多长换行setXHTML(boolean xhtml)&#160;输出xhtmlsetXmlOut(boolean xmlOut) 输出xmlsetXmlPi(boolean xmlPi)&#160;文件头输出xml标记setXmlSpace(boolean xmlSpace) 加入xml名字空间属性
使用方法极为easy，定义输入输出流，用tidy.parse()转换就行了：
BufferedInputStream in;
FileOutputStream out;
Tidy tidy = new Tidy();
tidy.setConfigurationFromFile(configFileName);//配置文件，写入上面的设置参数
try {
in = new BufferedInputStream(new FileInputStream(srcFileName));
out [...]]]></description>
			<content:encoded><![CDATA[<p>最近工作中要从网页提取信息，打算先把html转换成标准的xml格式，然后方便使用dom4j进行后续的解析，试用了不少现成的类库，JTidy、NekoHTML、HTML Parser、Jericho，最后还是使用了JTidy。</p>
<p>只是r8 snapshot还只是一个nightly builds，前面的r7版更已经是4年前的事了，这个项目就这样荒废了？可能是参与的人太少又或者是觉得已经成熟？</p>
<p><span class="style7">JTidy</span>提供了一个语法检查器和标签补偿器，能够对各种乱七八糟的html进行修复，使之符合xhtml标准。</p>
<p>r8 snapshot相对于r7改变了一些参数的设置方法，特别是在字符编码处理上，用setInputEncoding和setOutputEncoding方法来确定输入和输出文件的字符编码，可以使用任何有效的Java编码名称，这就比以前的强多了。</p>
<p>总体上解析的结果还不错，只是有些地方还需要对生成文件进行手工调整，或者自己再编一段代码处理一下，已经不是大问题了。</p>
<p><strong>一些常用的参数设置：</strong></p>
<p>setAltText(java.lang.String altText)&nbsp;<br />加上默认的alt属性值<br />setBreakBeforeBR(boolean breakBeforeBR) <br />在换行&lt;br /&gt;之前加一空行<br />setCharEncoding(int charencoding) <br />已废弃<br />setConfigurationFromFile(java.lang.String filename) <br />从文件中读取配置信息<br />setConfigurationFromProps(java.util.Properties props) <br />从properties中读取配置信息<br />setErrfile(java.lang.String errfile) <br />错误输出文件<br />setFixBackslash(boolean fixBackslash) <br />URL中用/取代\<br />setForceOutput(boolean forceOutput) <br />不管生成的xml是否有错，强制输出。<br />setHideComments(boolean hideComments)&nbsp;<br />结果中不生成注释<br />setInputEncoding(java.lang.String encoding) <br />输入编码<br />setLogicalEmphasis(boolean logicalEmphasis) <br />用em替代i，strong替代b<br />setMessageListener(TidyMessageListener listener) <br />加入一个TidyMessageListener监听器<br />setOnlyErrors(boolean onlyErrors)&nbsp;<br />只输出错误文件<br />setOutputEncoding(java.lang.String encoding)&nbsp;<br />输出编码<br />setPrintBodyOnly(boolean bodyOnly)&nbsp;<br />只输出body中的部分<br />setRepeatedAttributes(int repeatedAttributes)&nbsp;<br />重复属性的处理<br />setSpaces(int spaces)&nbsp;<br />每行前的空格数，就是缩进格式<br />setTidyMark(boolean tidyMark)&nbsp;<br />是否生成tidy标记<br />setTrimEmptyElements(boolean trimEmpty)&nbsp;<br />不输出空元素<br />setUpperCaseAttrs(boolean upperCaseAttrs)&nbsp;<br />属性变大写<br />setUpperCaseTags(boolean upperCaseTags)&nbsp;<br />标记变大写<br />setWraplen(int wraplen)&nbsp;<br />多长换行<br />setXHTML(boolean xhtml)&nbsp;<br />输出xhtml<br />setXmlOut(boolean xmlOut) <br />输出xml<br />setXmlPi(boolean xmlPi)&nbsp;<br />文件头输出xml标记<br />setXmlSpace(boolean xmlSpace) <br />加入xml名字空间属性</p>
<p><strong>使用方法极为easy，定义输入输出流，用tidy.parse()转换就行了：</strong></p>
<p>BufferedInputStream in;</p>
<p>FileOutputStream out;</p>
<p>Tidy tidy = new Tidy();</p>
<p>tidy.setConfigurationFromFile(configFileName);//配置文件，写入上面的设置参数</p>
<p>try {</p>
<p>in = new BufferedInputStream(new FileInputStream(srcFileName));</p>
<p>out = new FileOutputStream(outFileName);</p>
<p>tidy.parse(in, out);</p>
<p>} catch (IOException e) {</p>
<p>System.out.println(e);</p>
<p>}<br />&nbsp;</p>
<h3>相关文章</h3>
<ul class="related_post">
<li>2008-09-15 &#8212; <a href="http://www.robertbao.com/post/1199" title="轻量级统一会计系统">轻量级统一会计系统 (0)</a></li>
<li>2008-07-05 &#8212; <a href="http://www.robertbao.com/post/1198" title="项目组餐饮结算系统">项目组餐饮结算系统 (0)</a></li>
<li>2007-06-26 &#8212; <a href="http://www.robertbao.com/post/1193" title="我的Antfile模板">我的Antfile模板 (0)</a></li>
<li>2010-01-29 &#8212; <a href="http://www.robertbao.com/post/1204" title="简易开发管理工具">简易开发管理工具 (1)</a></li>
<li>2009-11-11 &#8212; <a href="http://www.robertbao.com/post/1208" title="程序员的高效实践">程序员的高效实践 (2)</a></li>
<li>2009-09-01 &#8212; <a href="http://www.robertbao.com/post/1206" title="程序员的自我修养">程序员的自我修养 (1)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robertbao.com/post/725/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
