易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : xml

使用Velocity+zip+xml快速构建word2007文档

技术介绍
     在一般的Java项目中,生成word文档的时候,我们会使用到jacob来作为我们生成word文档的工具,但是jacob是通过使用JNI调用dll文件来实现,这样的工作方式带来了极大的性能开销.这里我们采用Velocity+zip+xml快速构建word2007文档,所以说这个技术实现有一定的局限性,生成的必须是word2007文档.
     我们先来了解下word2007文档,word2007文档本身是以xml文件格式存储的,然后将相关的xml文件和资源文件压缩得到.为了让大家更加明白,先来做个小实验,我们新建一个word2007文档,然后打开后随便输入一些内容,保存后,将其扩展名docx修改为zip.然后你会发现真的可以用压缩工具查看.目录结构如下.
│  [Content_Types].xml

├─docProps
│      app.xml
│      core.xml

├─word
│  │  document.xml
│  │  endnotes.xml
│  │  fontTable.xml
│  │  footnotes.xml
│  │  settings.xml
│  │  styles.xml
│  │  webSettings.xml
│  │
│  ├─th ......

在XML文件中读取属性文件(.properties)中的元素值

在XML文件中读取属性文件(.properties)中的元素值:
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/conf/dataAccessContext.xml</param-value>
</context-param>

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
dataAccessContext.xml
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/conf/proxool-jdbc.properties</value>
</list>
</property>
</bean>

<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" autowire="byName">
<property name="driver">
<value>${proxool.driver}</value>
</property>
<property ......

关于XML中字节写入流字段时的说明

方法一:
      采取通用的base64编码方式,取时解码存时加码。
毛老师提供了完整的编码代码,且效率很高。
unit Base64;

interface

uses SysUtils, Classes;

type
{$IFDEF UNICODE}
Base64String = AnsiString;
{$ELSE}
Base64String = string;
{$ENDIF}

// 按源长度SourceSize返回Base64编码所需缓冲区字节数
function Base64EncodeBufSize(SourceSize: Integer): Integer;
// 获取Sourec的Base64编码,Base64Buf必须有足够长度。返回实际编码字节数
function Base64Encode(const Source; SourceSize: Integer; var Base64Buf): Integer; overload;
// 将Source编码为Base64字符串返回 `
function Base64Encode(const Source; SourceSize: Integer): Base64String; overload;
// 将Source从StartPos开始的Size长度的内容源编码为Base64,写入流Dest。
// Size=0 表示一直编码到文件尾
procedure Base64Encode(Source, Dest: TStream; StartPos: Int64 = 0; Size: Int64 = 0); overload;
// 把字符串Str编码为Base64字符串返回
{$IFDEF U ......

XML 实体引用

在 XML 中,一些字符拥有特殊的意义。
如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生 XML 错误:
<message>if salary < 1000 then</message>
为了避免这个错误,用一个实体引用来代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 个预定义的实体引用:
&lt;
<
小于
&gt;
>
大于
&amp;
&
和号
&apos;
'
单引号
&quot;
"
引号
注释:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。 ......

XML 属性vs元素

请看下面的示例:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

在第一个例子中,sex 是一个属性。在第二个例子中,sex 则是一个子元素。两个例子均可提供相同的信息。
没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。
因使用属性而引起的一些问题:
属性无法包含多个值(子元素可以)
属性无法描述树结构(子元素可以)
属性不易扩展(为未来的变化)
属性难以阅读和维护
请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。
元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。 ......

Jdom 读取 xml文件例子


Jdom
读取
xml
文件例子
1.         

JDOM
读取
XML
文件需先用
org.jdom.input.SAXBuilder
对象的
build()
方法创建
Document
对象
,
然后用
Document
类、
Element
类等的方法读取
1.
Sample1.java
import
java.util.*;
import
org.jdom.*;
import
org.jdom.input.SAXBuilder;
public

class
Sample1 {
 
public

static

void
main(String[] args)
throws
Exception{

   
SAXBuilder sb=
new
SAXBuilder();
   
Document doc
=sb.build(Sample1.class.getClassLoader().getResource("test.xml")); //构造文档对象

   
Element root=doc
.getRootElement();
//
获取根元素
   
List list=root.getChildren(
"disk"
);
//
取名字为
disk
的所有元素
   
for
(
int
i=0;i<list.size();i++){
      
Element element=(Element)list.get(i);
      ......
总记录数:815; 总页数:136; 每页6 条; 首页 上一页 [22] [23] [24] [25] 26 [27] [28] [29] [30] [31]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号