??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人亚洲精品青草天美,亚洲第一精品福利,亚洲 综合 国产 欧洲 丝袜 http://www.tkk7.com/shakebaby/不知搜 不会(x)学zh-cnSun, 11 May 2025 02:01:00 GMTSun, 11 May 2025 02:01:00 GMT60“中文问题没商量”之Dom4j中的~码问题(转蝲)http://www.tkk7.com/shakebaby/archive/2007/02/08/98781.htmlshakebabyshakebabyThu, 08 Feb 2007 07:03:00 GMThttp://www.tkk7.com/shakebaby/archive/2007/02/08/98781.htmlhttp://www.tkk7.com/shakebaby/comments/98781.htmlhttp://www.tkk7.com/shakebaby/archive/2007/02/08/98781.html#Feedback1http://www.tkk7.com/shakebaby/comments/commentRss/98781.htmlhttp://www.tkk7.com/shakebaby/services/trackbacks/98781.html  Dom4j是一个比较优U的java开源xml解析目Q支持DOM, (tng)SAX (tng)and (tng)JAXP.Qƈ提供对XPath查询语言的强大支持。因此,在EasyJF团队的很多开源项目中Q如EasyJWeb、EasyDBO{都是用Dom4j来处理xml文g相关操作?br /> (tng)
1、从一个xml文g中蝲入一个Dom到内存:(x)
  FileInputStream (tng)in (tng)= (tng)new (tng)FileInputStream(new (tng)File(fileName));
  SAXReader (tng)reader (tng)= (tng)new (tng)SAXReader();
  doc (tng)= (tng)reader.read(in);
2、把Dom中的数据写入到xml文g?br />  使用Dom4jQ要把一个Dom中的数据写入到文仉常简单,API如下Q?br />   (tng)public (tng)void (tng)write(Writer (tng)writer) (tng)throws (tng)I(yng)OExceptionQ?br />  因此Q假如我们要把一个Document写入到c:\test.xml文g中,可以单的使用下面的代码即可:(x)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) java.io.Writer (tng)wr= (tng)new (tng)java.io.FileWrite(filename);
  doc.write(wr);
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) wr.close();//注意Q必要执行close()Ҏ(gu)Q才?x)实现真正的写?br />  
  q种用法也是Dom4j所推荐我们使用的非常简单的Ҏ(gu)。然而,当我们的dom中包含有中文字符数据的时候,q种Ҏ(gu)写入的xml文却无法直觉打开。会(x)提示cM如下的错误:(x)
   (tng)org.dom4j.DocumentException: (tng)invalid (tng)byte (tng)1 (tng)of (tng)1-byte (tng)UTF-8 (tng)sequence (tng)(0xb2) (tng)Nested (tng)exception: (tng)invalid (tng)byte (tng)1 (tng)of (tng)1-byte (tng)UTF-8 (tng)sequence (tng)(0xb2)
 (tng)at (tng)org.dom4j.io.SAXReader.read(SAXReader.java:484)
 (tng)at (tng)org.dom4j.io.SAXReader.read(SAXReader.java:343)
 (tng)at (tng)
  我们可以看生成的xml文g~码Q内Ҏ(gu)utf-8的,但文件格式确是ANSI的,如下图所C:(x)

 (tng)
原因分析Q?br />  ׃FileWriter默认的输出编码是ANSI~码Q而Dom4j中的wirteҎ(gu)提供的内容实际是以UTF-8保存的,因此造成?jin)包括中文字W的XML文g无法正常阅读?br /> (tng)
解决Ҏ(gu)Q?br /> (tng)  不能使用单的FileWriterQ而应该是使用一个能指定具体输出~码的WriterQ在JDK的io包中Q?tng)OutputStreamWriter可以指定输出~码?br />  正确的代码如下:(x)
 (tng) (tng) (tng) java.io.OutputStream (tng)out=new (tng)java.io.FileOutputStream(fileName);
 (tng) (tng) (tng)java.io.Writer (tng)wr=new (tng)java.io.OutputStreamWriter(out,"UTF-8"); (tng) (tng) (tng)
 (tng) (tng) (tng)doc.write(wr); (tng) (tng) (tng)
 (tng) (tng) (tng)wr.close();
 (tng) (tng) (tng)out.close();

  化一下可以写成下面的样式Q?br />
 (tng) (tng) java.io.Writer (tng)wr=new (tng)java.io.OutputStreamWriter(new (tng)java.io.FileOutputStream(fileName),"UTF-8"); (tng) (tng) (tng)
 (tng) (tng) (tng)doc.write(wr); (tng) (tng) (tng)
 (tng) (tng) (tng)wr.close();

结Q?br />  ׃大多CU的基性开源项目都是老外开发,他们不大可能在中文^Cq行试Q用例数据也很少?x)用中文^収ͼ因此Q我们即使按照这些开源项目的通用说明文?qing)用h南去操作Q也?x)出现很多不可预知的错误。这也是Z么本参与l徏开源团队EasyJFQ提倡搞国开源,q开发一些基性的开源框架如EasyJWeb、EasyDBO的一个初街?br />  当然Q这里提出的中文问题Q算是一个还“没来得?qing)商量”以?qing)要通过一些罕见的处理才能正确q行的中文问题。因此,同样归ƈC(jin)“中文问题没商量”系列中?br />
(注:(x)本文作?EasyJF开源团?/font> 大(chng)Q{载请保留作者声明!)

shakebaby 2007-02-08 15:03 发表评论
]]>
Service Component Architecturehttp://www.tkk7.com/shakebaby/archive/2007/01/27/96297.htmlshakebabyshakebabySat, 27 Jan 2007 10:35:00 GMThttp://www.tkk7.com/shakebaby/archive/2007/01/27/96297.htmlhttp://www.tkk7.com/shakebaby/comments/96297.htmlhttp://www.tkk7.com/shakebaby/archive/2007/01/27/96297.html#Feedback1http://www.tkk7.com/shakebaby/comments/commentRss/96297.htmlhttp://www.tkk7.com/shakebaby/services/trackbacks/96297.htmlService Component Architecture(SCA) 是一l标准,描述?jin)一个通过SOA构徏应用pȝ的模型。SCA扩展q补充了(jin)之前服务实现的方法,构徏在一些开攄标准之上Q比如Web Services?/p>

SCA提倡基于SOA的业务应用能够用lgQcomponentQ的形式来实C务逻辑Q这些组仉过面向服务的接口提供功?服务)Q或者用别的组仉过面向服务的接口提供的功能Q即服务引用(Service references)。SCA构Z个SOA的应用切分ؓ(f)两个主要步骤Q?br /> (tng)1.服务lg的实玎ͼ(x)提供或者用(consumeQ服务;
 (tng)2.服务lg的组装:(x)用来构徏完整的业务应用,通过q接服务引用与服?Through the wiring  (tng) (tng) (tng) of service reference to services)?br />Figure 1. Service Component Architecture

Service Component Architecture

SCA服务的实现支持用多U的~程语言Q既包括传统的面向对象或q程的语aQ如QJava,PHP,C++,COBOL,以XML为核?j)的BPELQXSLT{,又包括一些声明语aQdeclarative languageQ如QSQL和XQuery。SCA同样支持异步的和面向消息的调用以?qing)同步的调用q回模式?/p>

SCA支持l定(Bindings)一l访问机制用来调用服务,包括Web Services,Messaging Systems ?CORBA IIOPQBindings 是声明式?are handled declarativly)独立于实C码,SCA通过使用{略定义?jin)基功能的用,目的是ؓ(f)?jin)更方便的应用到业务pȝ?/p>

SCA提倡用Service Data Object(SDO)来表C服务中使用或返回的业务数据Q提供对业务数据l一的访问来满对SCA自己提供的业务服务的l一讉K?/p>

SCA规范p多文共同描qͼ每一文档描述SCA中的一个方面。装配模?Assembly Model)描述?jin)组仉的配U连接。装配模型独立于实现语言。客L(fng)和实?描述?jin)服务的实现和服务客L(fng)—?每一U实现语a有其自己的客L(fng)和针对该语言的SCA模型实现规范?/p>

原文



shakebaby 2007-01-27 18:35 发表评论
]]>
վ֩ģ壺 һ| avƬ߲| ҹþþþ| 91þԭ| AVƬɫ߹ۿ߳| ŮƵaƵȫվɫ Ůcaoվѿ߿ | ձĻ| ޹ۺϾƷĵһ| AVƬ߹ۿ| ɫͼƬС˵| avһ| һ߹ۿ| ޳aƬ߹ۿ| ŮˬƵ| ޵һƷƵ| Ʒ˳Ƶapp| ɫWWWŮ| ѹ߹ۿ| þùƷһ| ޹Ʒþþѿ| aaaƬѿ| ޻ɫƵ| ëƬվ߹ۿ| Ʒ1024| ޾Ʒ޿| һŮ18ëƬ| av| Ļ | ŷƷ˯ɳ| ޵һƬȫ| һëƬaaaaaaѿ| 츾þþƷ| þþþ޾Ʒ˵ | պѹۿ| ѡӰ | ԴƵ| ҰƵۿ| ҹ˾ѿƬ| þþƷavƷ| Aר߹ۿq| ѿٸƵ|