| weiqiuhong's profile我的地盤PhotosBlogLists | Help |
|
April 17 MSN的断层2008 很长时间没有上MSN的博客了,建了一个又一个的blog,但又被我一个又一个的丢弃。。今天回头看自己以前写的文字,有种漠然回首的错觉,就像迟暮的老人看着年轻人,心里感叹我也曾经年轻过一样,而我的blog中年现在确是一片空白,不能连灌起来。。使我竟有一丝悔意,想去弥补一样,这才有了这篇文字。。 2008年对于中国来说,要被历史记录的东西太多,三一四,五一二,以及零八零八。。。(先去做事,回来再续) November 09 用java在不同操作系统下安装PERL组件需求:用JAVA语言实现WINDOW和LINUX系统下自动安装PERL组件的功能。 public void execNormalInstall(String modulename) { Runtime runTime = Runtime.getRuntime(); Process process = null; try { if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) { modulename = modulename.replaceAll("::", "-"); String path = CorePlugin.getDefault().getPreferenceStore().getString(ITalendCorePrefConstants.PERL_INTERPRETER);//安装PERL的目录 ex:E:\Perl\bin path = path.substring(0, path.lastIndexOf("\\")); process = runTime.exec("cmd /c start /D" + path + "\\" + " ppm install " + modulename); // process = runTime.exec("cmd /c start /D" + path + "\\" + " /B ppm install " + modulename);// "/B"不打开DOS窗口 } else if (System.getProperty("os.name").toUpperCase().indexOf("LINUX") >= 0) { String command = "perl -MCPAN -e 'install " + modulename + "'"; openTerminal(command, process); } } catch (Exception e) { MessageBoxExceptionHandler.process(e); } } public static void openTerminal(String command, Process process) { String terminal = System.getenv("TERM"); try { process = Runtime.getRuntime().exec(new String[] { terminal, "-e", command + "; $SHELL" }); process.waitFor(); } catch (IOException e) { System.out.println(e.getMessage()); } catch (InterruptedException e) { // TODO: handle exception } 当然如果是linux,需要安装gcc的编译器,之前不懂PERL,也没用过LINUX,浪费好几天,在LINUX下还有个权限问题。 July 17 regular expression 因为要改一个关于正规检验的BUG,所以有幸学习了下正规表达式的语法。在网上看了很多资料,越看越糊涂,直到找到下面这个网址:http://www.blogjava.net/xuechen0721/archive/2007/01/01/91320.html
很不幸的是,虽然明白了正规表达式的语法,但是哪个BUG直到我写这个网志时,还被我设为“suspend”。具体情况如下:
July 13 获取主目录以及子目录下某一类型的文件 两种方法,一种采用递归:
1.
public class FileListExample { public static void main(String[] args) { String directory= "C:/TDDOWNLOAD"; firstMethod(directory); } public static void firstMethod(String dir) { String directory=dir; String filemask = "*.txt"+"$"; String currentFilePath=""; filemask = java.util.regex.Pattern.compile("[*]").matcher(filemask).replaceAll(".*"); boolean case_sensitive = true;//大小写敏感 java.util.regex.Pattern fileNamePattern = java.util.regex.Pattern.compile(filemask); if(!case_sensitive){ fileNamePattern = java.util.regex.Pattern.compile(filemask, java.util.regex.Pattern.CASE_INSENSITIVE); } java.io.File file=new java.io.File(directory); java.io.File[] files= file.listFiles(); for (int i = 0; i < files.length; i++){ if(files[i].isDirectory()) { currentFilePath = files[i].getAbsolutePath(); firstMethod(currentFilePath);//递归调用 }else { if(!fileNamePattern.matcher(files[i].getName()).find()){ continue; } String currentFileName = files[i].getName(); currentFilePath = files[i].getAbsolutePath(); System.out.println("currentFilePath:"+currentFilePath); } } } } 2.利用监听器 public class FileListExample2 { public static void firstMethod(String dir) { String sourceDir= dir; java.io.File file = new java.io.File(sourceDir); String filemask = "*.txt"+"$"; filemask = java.util.regex.Pattern.compile("[*]").matcher(filemask).replaceAll(".*"); boolean case_sensitive = true; java.util.regex.Pattern fileNamePattern = java.util.regex.Pattern.compile(filemask); if(!case_sensitive){ fileNamePattern = java.util.regex.Pattern.compile(filemask, java.util.regex.Pattern.CASE_INSENSITIVE); } final java.util.List<java.io.File> list_ = new java.util.ArrayList<java.io.File>(); file.listFiles(new java.io.FilenameFilter() { public boolean accept(java.io.File dir, String name) { java.io.File file = new java.io.File(dir, name); if (file.isFile()) { list_.add(file); return true; } else { file.listFiles(this);//此处是关健啦! } return false; } }); for(int i=0;i<list_.size();i++) { java.io.File files =list_.get(i); if(!fileNamePattern.matcher(files.getName()).find()){ continue; } String currentFileName = files.getName(); String currentFilePath = files.getAbsolutePath(); System.out.println("currentFilePath:"+currentFilePath); } } public static void main(String[] args) { String directory= "C:/TDDOWNLOAD"; firstMethod(directory); } } July 10 CentricCRM 前段时间接触了CentricCRM这个东西,是个Tomcat的project,但是我们要用的不多,只是http-xml api的部分。大部分资料来源于它的官方网站:http://www.centriccrm.com/ProjectManagement.do?command=ProjectCenter§ion=Wiki&pid=58&subject=Centric+CRM+Tools+Package
我自己觉得这个东西做的不是很好,别的功能我没用,但就http-xml api部分,应该还有很大的空间可以完善。(说这话,好像我很专业,其实嘛都不懂。。嘻!)也许是我还未更深入的研究透它的东西,就先将了解的部分写下来吧。
1.配置服务器
从http://www.centriccrm.com/ProjectManagement.do?command=ProjectCenter§ion=File_Library&pid=109&folderId=273网站down下cntricCRM 4.1.1.exe.(你可以根据OS来选择CRM的server,我嘛只会用windows,就down了个windows版的)。建议在安装CRM之前,最好装个数据库,常用的数据库就可以了。我自己安装了mysql.
2.配置CRM相关信息
安装完CRM后,记得开启tomcat,或点击CRM桌面图标,或打开IE直接输入http://127.0.0.1/centric进入centric配置页面了,就按要求填写。大体上分四步:
Step 1: Setup the file library//我按默认了,直接点“继续” Step 2: Setup external servers (mail, fax)//这一步信息比较多,主要是Centric CRM Configuration Server Settings,其实也什么特别的,我就按自己的想法乱填写了,最后也没出啥错。 Step 3: Setup the database//这一步,选择你之前安装资料库,建立好访问用户、资料库名,这样centric会将它的数据放入你填写的库中.我的是mysql,还必须将驱动程序放入tomcat下的centirc的lib目录里。 Step 4: Setup the Centric CRM administrative user account//最后一步是配置你登录CRM系统的用户了。 全部配成功后,按继续,系统会自动导入http://127.0.0.1:8080/centric/index.jsp登录画面了,用刚才最后一步配置的用户登入,就可以了,这样centricCRM的Server就配置成功了。
3.using http-xml api
利用XML来传输,其实和XMLRPC的原理是一样的。它的官方网站上也写的很清楚。就根据它的Action类型来看好了。
select:
July 05 一口气睡了20个小时 昨天玩游戏玩到2点,猪猪两点多还发短信给我,说他好想我,睡不着,我回了短信,就开始睡觉了。。一直迷迷糊糊的,现在终于知道为什么要晚上睡觉了,我就晚上少睡了几个小时,就用今天一整天来补睡,外面街道的卡拉OK故意跟我做对是的,一直唱,唱的有点心烦,但是我还是可以睡着的,只是乱做梦,一会去打怪兽,一会又回家了,就这样反反复复的,醒来也没力气起床吃饭,就一直睡,看见电脑都有点讨厌它,睡到现在才开始有点意识。。。猪猪说他昨晚5点多才睡,今天还上了一天班,听起来蛮惨的。。。我不行了,身体不好,不能熬夜。。以后不敢这样瞎折腾了,其实那游戏没嘛意思。这个想法是在我昨晚最累的时候,手都动不了,胳膊抬不起来,。。以后不玩了,医生说我要锻炼。。。我以后去找些阳光的事情来做。。。。 July 04 好想打游戏 上周末极无聊,就跟一网友去学打游戏了,没想到就狂迷上了,连做梦都在跟怪兽打仗。丫的,这两天天天回家打游戏,谁我都不想理,只是网络有点慢,郁闷的要死。。。就目前看来还有点好处,呵,每晚9点半-10点半网最慢,就去呼呼啦。要么就去75下弱小动物。。。。。。。。然后再呼呼去。。。现在终于明白猪猪为啥爱玩游戏了。。可是现在才发现他玩的都是小儿科,跟不上时代了。。等他来深圳,让他帮我换家网络。。。以后猪猪玩游戏,我绝对不说。。。。但是我玩游戏,猪猪也别拦着。。。嘻嘻!!!!!
今天猪猪问我要啥礼物。。。。我想都没想就说要化妆品。。。对啊,通宵玩游戏很容易变老,脸上出来好多细纹,本来就不显年轻。。切切。。。。要去额头纹和眼角纹的。。。最好是看你那个漂亮女同事,皮肤好的。没有皱纹的女同事。。用啥护肤品。给草草买回来。。。
只是我没玩游戏时,也没时间去护肤,大部分时间都用来呼呼了。。上次猪猪去北京,我那时一腔热血的想学英语,就让猪猪买了好记星,可是回来还是被我打游戏打的没电了。。。现在自动学习设置还在以a开头的单词里。。。早上去看时,上面都一层尘土了。。。。等猪猪回来去换个电池,我再学英语。。。 July 03 好爽的日子 男人和女人天天腻在一起,一点也没意思,但是你身处其中时,你并不自知,整天会为些绿豆大的事情吵架。。。也很容易忘掉除了他还有更精彩的日子。。。。。。有次问老大,你幸福吗?“幸福啊,有人可以聊天,有孩子可以玩玩,有工作可以做。。。”。。。其实幸福很简单。。。工作中解决一个难题时,那种满足感是幸福;一天努力工作,回家路上的充实感也是幸福;被朋友夸漂亮,那种愉悦感也是幸福。。。
有人会失眠,呵,我不会,我属于哪种没心没肺的。。如果我要睡觉,就算你敲罗打鼓,也甭想拦我去见周公。。。其实这种感觉好爽。,也被公司新同事称为幸福,哈哈!呵,对比来着。。公司新来的小女生说晚上睡不好。。。神经衰弱。。。嘻,对了,还有我家顺子,也会失眠。。说我是头猪,站着都能睡,。。也有点对吧,我一坐公交车,一晃一晃的,,,就呼呼去了。。好几次被拉到终点站,给乘务员叫醒的。。
顺子出差的日子,其实我过的好爽,心里话。。。想干哈就干哈,想睡就睡,想吃就吃,想玩通宵游戏就玩通宵游戏。。没人管。。。。挺实蛮爽的,这也就是我为什么要说不要和男人腻在一起,没嘛意思,时间都用来吵架了。。听到没有?周某人。。。。。。。。哈哈! June 28 xmlrpcRPC是Remote Procedure Call的缩写,中文意思就是远程过程调用,就是本地的机器上调用远端机器上的一个过程(方法),这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。按照“数据即程序”的观点来看,RPC无非是借助一些通信手段来互相传递数据(信息),所也她也是“高”层次的通信手段,无非是这种通信手段看起来更像是“过程的调用”,因为她往往以一个“函数”的面目示人,从而掩盖了她交换信息的实质。
XMLRPC,就是应用了XML技术的RPC。那么什么是XML了? XML和RPC一样也是一个东西的缩写,这个东西就是eXtensible Markup Language,中文意思就是可扩展标记语言,标记语言就是那种用尖括号(<>)括来括去语言,比如说HTML。XML的可扩展性也体现在它只定义了语言的格式,而并没有定义过多的关键字,也就是通常所说的标记(Tag),所以用户可以自由地选择定义标记。它的这种自由和简单的语法规则也使得它广为流传,被用来表示各种数据。XML在XMLRPC充当什么角色呢?答案就是“交换的数据格式”。在XMLRPC中数据将是XML格式的。 哈哈,以上说的好专业,声名下,是我从别的地方COPY来的。。不过下面的例子嘛,确是我自己辛勤学习的成果啦。。从这个网站上学来的滴:http://ws.apache.org/xmlrpc/client.html
1。先写个客户端和服务器通讯的类
package org.apache.xmlrpc.demo;
public class Calculator { public int add(int i1, int i2) { return i1 + i2; } public int subtract(int i1, int i2) { return i1 - i2; } } 2。建立server程式。提供两个server端:
第一种:
package org.apache.xmlrpc.demo.webserver;
import java.net.InetAddress;
import org.apache.xmlrpc.common.TypeConverterFactoryImpl;
import org.apache.xmlrpc.server.PropertyHandlerMapping; import org.apache.xmlrpc.server.XmlRpcServer; import org.apache.xmlrpc.server.XmlRpcServerConfigImpl; import org.apache.xmlrpc.webserver.WebServer; public class Server {
private static final int port = 8080; public static void main(String[] args) throws Exception {
WebServer webServer = new WebServer(port); XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer(); MyServlet myservlet=new MyServlet(); myservlet.newXmlRpcHandlerMapping() ; PropertyHandlerMapping phm = new PropertyHandlerMapping(); /* Load handler definitions from a property file. * The property file might look like: * Calculator=org.apache.xmlrpc.demo.Calculator * org.apache.xmlrpc.demo.proxy.Adder=org.apache.xmlrpc.demo.proxy.AdderImpl */ // phm.load(Thread.currentThread().getContextClassLoader(), // "MyHandlers.properties"); /* You may also provide the handler classes directly,
* like this: * phm.addHandler("Calculator", * org.apache.xmlrpc.demo.Calculator.class); * phm.addHandler(org.apache.xmlrpc.demo.proxy.Adder.class.getName(), * org.apache.xmlrpc.demo.proxy.AdderImpl.class); */ phm.addHandler("Calculator", org.apache.xmlrpc.demo.Calculator.class);//用这种方式加载通讯 xmlRpcServer.setHandlerMapping(phm); XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig(); serverConfig.setEnabledForExtensions(true); serverConfig.setContentLengthOptional(false); webServer.start();
} } 第二种:
a.必须建立一个properties的文件,名字必须为XmlRpcServlet.properties,必须放在org.apache.xmlrpc.webserver的包下面。
内容如下:Calculator=org.apache.xmlrpc.demo.Calculator
b.可以加验证:
package org.apache.xmlrpc.demo.webserver;
import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.XmlRpcRequest; import org.apache.xmlrpc.common.XmlRpcHttpRequestConfig; import org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping; import org.apache.xmlrpc.server.PropertyHandlerMapping; import org.apache.xmlrpc.server.XmlRpcHandlerMapping; import org.apache.xmlrpc.webserver.XmlRpcServlet; public class MyServlet extends XmlRpcServlet { private boolean isAuthenticated(String pUserName, String pPassword) { return "username".equals(pUserName) && "password".equals(pPassword); } protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() throws XmlRpcException { PropertyHandlerMapping mapping = (PropertyHandlerMapping) super.newXmlRpcHandlerMapping(); AbstractReflectiveHandlerMapping.AuthenticationHandler handler = new AbstractReflectiveHandlerMapping.AuthenticationHandler(){ public boolean isAuthorized(XmlRpcRequest pRequest){ XmlRpcHttpRequestConfig config = (XmlRpcHttpRequestConfig) pRequest.getConfig(); return isAuthenticated(config.getBasicUserName(), config.getBasicPassword()); }; }; mapping.setAuthenticationHandler(handler); return mapping; } } c.servletServer
package org.apache.xmlrpc.demo.webserver;
import org.apache.xmlrpc.webserver.ServletWebServer;
import org.apache.xmlrpc.webserver.XmlRpcServlet; public class ServletServer {
private static final int port = 8080; public static void main(String[] args) throws Exception {
ClassLoader cl = Thread.currentThread().getContextClassLoader(); //XmlRpcServlet servlet = new XmlRpcServlet(); MyServlet servlet=new MyServlet(); ServletWebServer webServer = new ServletWebServer(servlet, port); webServer.start(); } } 说明:第二种server在加载时是通过读properties文件,来得到通讯的,所以那个文件很重要哟!
3.Client端,对应server提供两个类:
package org.apache.xmlrpc.demo.client;
import java.net.URL;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory; import org.apache.xmlrpc.client.util.ClientFactory; public class Client { public static void main(String[] args) throws Exception { // create configuration XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL("http://127.0.0.1:8080/xmlrpc")); config.setEnabledForExtensions(true); config.setConnectionTimeout(60 * 1000); config.setReplyTimeout(60 * 1000); XmlRpcClient client = new XmlRpcClient();
// use Commons HttpClient as transport client.setTransportFactory( new XmlRpcCommonsTransportFactory(client)); // set configuration client.setConfig(config); // make the a regular call
Object[] params = new Object[] { new Integer(3), new Integer(2) }; Integer result = (Integer) client.execute("Calculator.add", params); Integer ss=(Integer) client.execute("Calculator.subtract", params); System.out.println("3 + 2 = " + result); System.out.println("3 - 2 = " + ss); } } package org.apache.xmlrpc.demo.client;
import java.net.URL;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory; import org.apache.xmlrpc.client.util.ClientFactory; public class Client1 { public static void main(String[] args) throws Exception { // create configuration XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL("http://127.0.0.1:8080/xmlrpc")); config.setEnabledForExtensions(true); config.setConnectionTimeout(60 * 1000); config.setReplyTimeout(60 * 1000); config.setBasicUserName("username"); config.setBasicPassword("password"); XmlRpcClient client = new XmlRpcClient();
// use Commons HttpClient as transport client.setTransportFactory( new XmlRpcCommonsTransportFactory(client)); // set configuration client.setConfig(config); // make the a regular call
Object[] params = new Object[] { new Integer(3), new Integer(2) }; Integer result = (Integer) client.execute("Calculator.add", params); Integer ss=(Integer) client.execute("Calculator.subtract", params); System.out.println("3 + 2 = " + result); System.out.println("3 - 2 = " + ss); } } 4。OK了,其实也可以用tomcat做server,不过这种方法,饿没研究,,有时间可以研究下。。。
RSS(2) RssOutput就是输出一个xml文件,唯一的要求就是此xml文件要能append...用dom4j的包就OK了。。我在网上有找到一个例子,不错,我采用拿来主义,稍微修改了下,现在成我的了。。呵呵。。
import java.io.File;
import java.io.FileWriter; import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class EncodingModel {
public static void main(String[] args) { File file=new File("D:/runtime-talend.product/out1.xml");
int i=createXMLFile(file.toString()); int j=formatXMLFile(file.toString()); } public static int createXMLFile(String filename){ /** 返回操作结果, 0表失败, 1表成功 */
int returnValue = 0;
Document document = DocumentHelper.createDocument(); Element booksElement = document.addElement("books"); Element bookElement = booksElement.addElement("book"); Element titleElement = bookElement.addElement("title"); titleElement.setText("标题"); bookElement = booksElement.addElement("book"); bookElement.addAttribute("show","yes"); titleElement = bookElement.addElement("title"); titleElement.setText("书屋"); bookElement = booksElement.addElement("book"); bookElement.addAttribute("show","no"); titleElement = bookElement.addElement("title"); titleElement.setText("作者"); Element authorElement=bookElement.addElement("author"); authorElement.setText("sugelade"); try{ OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GB2312");//有中文的时,必须得设成GB2312,原因不知,呵! //format.setEncoding("utf-8"); XMLWriter writer= new XMLWriter(new FileWriter(new File(filename)),format); writer.write(document); writer.close(); returnValue = 1; }catch(Exception ex){
ex.printStackTrace();
}
return returnValue; }
public static int formatXMLFile(String filename){ int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename)); List list = document.selectNodes("/books" ); Element booksElement =(Element) list.get(0); Element nameElement=booksElement.addElement("name"); nameElement.setText("魏秋红");//呵,不错,名字终于变成铅字了,挺光荣滴! Element sexElement=booksElement.addElement("sex"); sexElement.setText("女"); Element moneyElement=booksElement.addElement("money"); moneyElement.setText("没有"); Element descElement=booksElement.addElement("description"); descElement.setText("djfewwfeteauture.jioer"); XMLWriter writer = null; OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GB2312"); // format.setEncoding("utf-8"); writer= new XMLWriter(new FileWriter(new File(filename)),format); writer.write(document); writer.close(); returnValue = 1; }catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
} 若想追加原文件,用List list = document.selectNodes("/books" ); Element booksElement =(Element) list.get(0);。。。
这些只是我做RssOutput时的测试类。。。真正的RssOutput代码如下了,呵,看起来会比较吃力的,因为JET自动生成的了。。。
//标头部分。。
java.io.File filetRSSOutput_1 = new java.io.File(/**
* Start field * tRSSOutput_1:FILENAME */ "D:/runtime-talend.product/out.xml"/** * End field * tRSSOutput_1:FILENAME */ ); org.dom4j.Document documenttRSSOutput_1 = null; org.dom4j.Element channelElementtRSSOutput_1 = null; org.dom4j.Element titleHElementtRSSOutput_1 = null; org.dom4j.Element descriptionHElementtRSSOutput_1 = null; org.dom4j.Element pubdateHElementtRSSOutput_1 = null; org.dom4j.Element linkHElementtRSSOutput_1 = null; if (true && filetRSSOutput_1.exists()) { //append为true时
org.dom4j.io.SAXReader saxReadertRSSOutput_1 = new org.dom4j.io.SAXReader();
documenttRSSOutput_1 = saxReadertRSSOutput_1 .read(new java.io.File(/** * Start field * tRSSOutput_1:FILENAME */ "D:/runtime-talend.product/out.xml"/** * End field * tRSSOutput_1:FILENAME */ )); } else {
documenttRSSOutput_1 = org.dom4j.DocumentHelper
.createDocument(); org.dom4j.Element rssElementtRSSOutput_1 = documenttRSSOutput_1 .addElement("rss"); rssElementtRSSOutput_1.addAttribute("version", "2.0"); channelElementtRSSOutput_1 = rssElementtRSSOutput_1 .addElement("channel"); titleHElementtRSSOutput_1 = channelElementtRSSOutput_1 .addElement("title"); titleHElementtRSSOutput_1.setText("aaa"); descriptionHElementtRSSOutput_1 = channelElementtRSSOutput_1 .addElement("description"); descriptionHElementtRSSOutput_1.setText("bb"); pubdateHElementtRSSOutput_1 = channelElementtRSSOutput_1 .addElement("pubdate"); pubdateHElementtRSSOutput_1 .setText("Sat, 07 Sep 2002 00:00:01 GMT"); linkHElementtRSSOutput_1 = channelElementtRSSOutput_1 .addElement("link"); linkHElementtRSSOutput_1.setText("http://www.baidu.com"); }
//主体部分
if (true && filetRSSOutput_1.exists()) {
java.util.List listtRSSOutput_1 = documenttRSSOutput_1 .selectNodes("/rss/channel"); channelElementtRSSOutput_1 = (org.dom4j.Element) listtRSSOutput_1 .get(0); listtRSSOutput_1 = documenttRSSOutput_1 .selectNodes("/rss/channel/title"); titleHElementtRSSOutput_1 = (org.dom4j.Element) listtRSSOutput_1 .get(0); titleHElementtRSSOutput_1.setText("aaa"); listtRSSOutput_1 = documenttRSSOutput_1 .selectNodes("/rss/channel/description"); descriptionHElementtRSSOutput_1 = (org.dom4j.Element) listtRSSOutput_1 .get(0); descriptionHElementtRSSOutput_1.setText("bb"); listtRSSOutput_1 = documenttRSSOutput_1 .selectNodes("/rss/channel/pubdate"); pubdateHElementtRSSOutput_1 = (org.dom4j.Element) listtRSSOutput_1 .get(0); pubdateHElementtRSSOutput_1 .setText("Sat, 07 Sep 2002 00:00:01 GMT"); listtRSSOutput_1 = documenttRSSOutput_1 .selectNodes("/rss/channel/link"); linkHElementtRSSOutput_1 = (org.dom4j.Element) listtRSSOutput_1 .get(0); linkHElementtRSSOutput_1.setText("http://www.baidu.com"); }
org.dom4j.Element itemElement = channelElementtRSSOutput_1 .addElement("item"); org.dom4j.Element titleElement = itemElement
.addElement("title"); titleElement.setText(row1.TITLE == null ? "" : String
.valueOf(row1.TITLE)); org.dom4j.Element descriptionElement = itemElement
.addElement("description"); descriptionElement.setText(row1.DESCRIPTION == null ? ""
: row1.DESCRIPTION); org.dom4j.Element pubdateElement = itemElement
.addElement("pubdate"); java.text.SimpleDateFormat sdfTemptRSSOutput_1 = new java.text.SimpleDateFormat( "EEE, d MMM yyyy HH:mm:ss z", java.util.Locale.US); java.util.SimpleTimeZone aZonetRSSOutput_1 = new java.util.SimpleTimeZone( 8, "GMT"); sdfTemptRSSOutput_1.setTimeZone(aZonetRSSOutput_1); pubdateElement.setText(row1.PUBDATE == null ? "" : sdfTemptRSSOutput_1.format(row1.PUBDATE)); org.dom4j.Element linkElement = itemElement.addElement("link");
linkElement.setText(row1.LINK == null ? "" : row1.LINK);
呵呵。。知道你看不懂,我自己明白就好,提供个比较重要的地址:http://cyber.law.harvard.edu/rss/rss.html..
特别需要提示的是发布Rss的日期格式...RSS 要求日期必须按照 RFC822 日期和时间规范 进行格式化,此格式要求:开头是一个可选的3字母星期缩写加一个逗号,接着必须是日加上3字母缩写的月份和年份,最后是一个带时区名的时间。OVER! RSS(1)这是我的第一份关于技术的文章。。。。
前段时间应客户要求,要做两个关于RSS的组件, 第一个RSSINPUT:Goal of this new component is to read an RSS flow(use RSS tag : title, description, pubDate, and link). Parameters : rss url,option : read articles from date ,option limit (read max Y articles, choosed by user)。。 起先我引入的包是 rsslib4j-0.2.jar(http://www.open-open.com/48.htm),先将代码COPY出来: import java.net.MalformedURLException; import java.net.URL; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedList; import org.gnu.stealthp.rsslib.RSSChannel; import org.gnu.stealthp.rsslib.RSSException; import org.gnu.stealthp.rsslib.RSSHandler; import org.gnu.stealthp.rsslib.RSSItem; import org.gnu.stealthp.rsslib.RSSParser; public class RssExample {
public static void main(String[] args) { Date d=new Date(); String rssurl="http://rss.sina.com.cn/sports/global/italy.xml"; URL url = null; try { url = new URL(rssurl); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } RSSHandler hand = new RSSHandler(); try { RSSParser.parseXmlFile(url, hand, false); } catch (RSSException e) { // TODO Auto-generated catch block e.printStackTrace(); } RSSChannel ch = hand.getRSSChannel(); LinkedList lst = hand.getRSSChannel().getItems(); String row[]=new String [4]; for (int i = 0; i < lst.size(); i++) { RSSItem itm = (RSSItem) lst.get(i); itm.getTitle(); itm.getDescription(); String str=itm.getPubDate(); itm.getLink(); System.out.println(itm.toString()); Date dat=new Date(str); int j=dat.compareTo(d); } } } 这个任务很快就 resolved了,但是过了大概半个月左右,又被打回来,原因是license的问题,此包的license是GPL, 但是本公司产品的license用的是LGPL,个中原因,我一时半会无法说清,提供个网站,一目了然。。。 (http://hi.baidu.com/%CD%F5%BE%FC/blog/item/922a6059345ad12a2834f013.html) 只好找一个license为LGPL的包来代替啦。。。还好有找到了feed4j.jar... import it.sauronsoftware.feed4j.FeedParser; import it.sauronsoftware.feed4j.bean.Feed; import it.sauronsoftware.feed4j.bean.FeedHeader; import it.sauronsoftware.feed4j.bean.FeedItem; import java.net.URL; public class FeedExample { public static void main(String[] args) throws Exception { URL url = new URL("http://rss.sina.com.cn/sports/global/italy.xml"); Feed feed = FeedParser.parse(url); System.out.println("** HEADER **"); FeedHeader header = feed.getHeader(); System.out.println("Title: " + header.getTitle()); System.out.println("Link: " + header.getLink()); System.out.println("Description: " + header.getDescription()); System.out.println("Language: " + header.getLanguage()); System.out.println("PubDate: " + header.getPubDate()); System.out.println("** ITEMS **"); int items = feed.getItemCount(); for (int i = 0; i < items; i++) { FeedItem item = feed.getItem(i); System.out.println("Title: " + item.getTitle()); System.out.println("Link: " + item.getLink()); System.out.println("Plain text description: " + item.getDescriptionAsText()); System.out.println("HTML description: " + item.getDescriptionAsHTML()); System.out.println("PubDate: " + item.getPubDate()); } } } 引入feed4j.jar(http://www.sauronsoftware.it/projects/feed4j/)时,记得同时要引入dom4j-1.6.1.jar, nekohtml.jar,xercesImpl.jar,xml-apis.jar.. RssInput就OK了。。下一篇说下RssOutPut...其实很多高深的原理。。我并不明白,管它呢。。会用的API就行了。。 想的太多,,容易老哟。。。 June 26 又要离职吗? 一个月前,我很轻松的对经理说要离职的事情。。。这个月我还是尽自己的努力在做事情,我一直在想也许能力是一回事,但是责任更重要吧。。。今天老总问我时,我确给自己要了一个想一下的机会。。。我去征求所有人的意见,男友的,朋友的,。。。甚至网友的。。。他们所有的人都不愿意我离开深圳,而我自己却在犹豫,犹豫我当初的那句轻易抛出去的话,我觉得如果我要留下,出尔反尔的。。。我不喜欢这样的自己。。。。就让我死守我曾经说出去的话吧。。
关于回家 好长时间没写网志了,一是太懒了,二是时间过的太快,三是现在表达能力太差了。就像黑土说白云一样,七天憋出六个字来。总之,是代码没写好,中文表达能力散失滴的也差不多了。。
深圳造就了很多独立、坚强的人们,很不巧,我觉得我不是。。我自己能感觉到自己变虚荣了,麻木了,贪财了,甚至同情这个字也在渐渐离我远去。。但是我还是觉得深圳很好,给很多人提供了机会。连要饭的也多些。。。我现在有些迷茫,不知道我要不要回西安? March 27 要把自己当回事 今天心情不好,也不知为什么,反正就是烦,静不下心了,发呆好长时间.不知道在深圳呆着是为了什么,...很想回家教书去了;很想远离深圳式生活;很想不负责任的回到学校去念书;.....呵,去年应该听话,到学校念书.....说不定现在又在抱怨早知道,该去上班的.哈,人就这么回事吧.....
可能是这段时间看的越多,越搞不清楚状况,越觉得自己相差好远,有些紧张,也有些压力..呵,承受压力的能力太差了....静下心,静下心,所有的人生下来就只会哭,其它的都是后天学来的,边学边用,边用边学,学以致用....不要拿自己太当回事,也不要把自己不当回事.最起码知道很多地方还需要学,自己给自己加油!! kjreoteot 这段时间一直在学习,到了今天早上回忆起来,前半部分学的不是很清晰..我明白自己好菜,所以还是需要多加努力,努力锻炼身体,也努力提高自己的能力.. March 16 不知如何健胃? 一直胃不好,我以为慢慢调理下就会OK?没想到现在开始痛,一吃东西就会胀,有时会反胃,全吐出来,搞的我好没精力,顺手网上查了些资料,吓的半死:长期如此会产生胃炎,胃溃疡,甚至胃癌.现在也不知要如何调理?尽管中药难喝的要死,但是每次都硬着头皮喝光了,可是没有一点疗效?西药也吃了一堆,就是没有效果?现在的医生好过分,哪天给他们整死了就对了....
胃病,实际上是许多病的统称。它们有相似的症状,如上腹胃脘部不适、疼痛、饭后饱胀、嗳气、反酸,甚至恶心、呕吐等等。 临床上常见的胃病有急性胃炎、慢性浅表性胃炎、慢性萎缩性胃炎、胆汁反流性胃炎、胃溃疡、十二指肠球部溃疡、胃息肉、胃结石、胃的良(恶)性肿瘤, 还有胃粘膜脱垂症、急性胃扩张、幽门梗阻等等。这些胃病在临床上又可根据症状、发病机理进行细分,还有轻重程度的不同。
胃炎属于胃病的一种,分急性胃炎和慢性胃炎两种。慢性胃炎包括浅表性胃炎、萎缩性胃炎、反流性胃炎、糜烂性胃炎、渗出性胃炎、隆起性胃炎、肥厚性胃炎、疣状胃炎等。 患了胃病后,除了积极治疗外,还需要进行调理。胃病的调理需要注意以下几个方面:
1 、注意饮食 a、饮食的选择:刺激性的、酸性的、产气性的食物不要吃; b、饮食的量:饮食的多少跟胃的工作量和负担有很大关系,尽量少量多餐,有规律地进食; c、饮食的温度:胃对温度比较敏感,忽冷忽热对胃的刺激很大,饮食以温热为佳。红薯、芋头不要吃;鸡蛋少吃。 2 、日常生活 不抽烟、不喝酒,不要熬夜,尽量保持心情轻松。 3 、经常锻炼 经常锻炼身体,提高身体的免疫力和抵抗力。 胃病的治疗,离不开平时的保养,特别是需要注意饮食作息方面,如能坚持下列原则,胃病当会好转,并提前痊愈。 1)保持好轻松快乐的心情。心情好,气血运行舒畅,气机正常运行,胃病自会减轻; 2)注意作息。不要过劳过虑,劳则伤脾; 3)舌淡无味者。可以用山楂、酸菜或香茶等食物开胃醒脾; 4)饭量适当。胃病患者胃气较虚,不应过量饮食。吃饭时应细嚼慢咽; 5)不要食用辛辣刺激性食物。如大蒜、生葱、酒等; 6)不要食用生冷食物。如萝卜、芦荟等; 7)注意天气变化。人禀受天地之气,如天气变化,人体以应之,注意防寒。 养胃十法
1. 饭前先吃一点开胃的汤或菜,使胃液分泌活跃起来,使胃处于消化吸收的准备状态。 2. 饭前饮水要适量,饮水过多会稀释胃液,使消化能力减弱。 3. 吃饭时细嚼慢咽。 4. 吃饭要心情愉快。 5. 食物温度要适中,过冷或过热都会伤害胃壁,同时要注意胃部不要受寒。 6. 不可暴饮暴食。 7. 饮后充分休息,使胃肠能够正常工作 。 8. 养成定时进餐的习惯 。 9. 饮酒要适量。 10. 要了解自己的胃。就像人的性格一样,胃的个性也各不相同,只有了解胃的情况,才能调节好胃。 March 10 难喝的中药 不知道中医是如何看病的?我家有三个医生,我爸,大姐,二姐都是医生,而且老二还是中医。。。但是我也不知中医如何看病?我从没见过我家老二是如何把脉??是不是把了脉之后,什么病都了如指掌了。。哈,历害啦。。。不过,中医开的药可就难吃了,一直渗到骨头里。可能真的是良药苦口,希望如此啦。。。 March 05 我做的饭太难吃了 昨天去称了一下,好像又瘦了2斤,不知怎么了,自从学校毕业后,就一直往下瘦,不想在外面吃饭。昨天去外面吃,就看见了一根头发,哽的我要死,出去全吐出来了。。只好自己做饭,我有时好饿,但是只要一吃我做的饭,只吃两口,就饱了,因为我做的太难吃了。。其实我自己做的还不如外面的。。可能太懒了,只想着做些省事的饭,哪就下面条啦,几乎我做饭每次都是面条,说白了,我也不会做其它的。。呵呵。。
我记得我小时候,每次我妈叫我吃饭,我都懒的去端碗,总是要我弟去搬桌子,端碗。。我老妈就给我讲了一个故事:说是有一个懒汉,很懒。。吃饭都不想动。有一次,懒汉的老婆要回娘家,怕懒汉饿死,就做了一个中间有个孔的大饼套在懒汉的脖子上。。过了几天,他老婆回去后,发现懒汉还是饿死了,他老婆很奇怪,就去看,发现原来懒汉只将脖子前的饼吃光了,脑袋后面的都没动,旁人不明白怎么回事,只有懒汉老婆明白,懒汉太懒了,他是懒的将脑袋后面的饼转到前面来。。我当时只是笑我老娘,哪有那么懒的人。。呵呵,现在看来,我也差不多了,要好好学下如何做饭了,否则,有一天,我可能会真的被我自己养饿死了。。。那时,我妈总骂我是懒汉懦夫,这几个字那个时候我还不会写,还一直以为是个做了坏事的名人哩。。哈哈。。。 |
|
|