动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.ora-02069 错误处理方法.
.oracle data pump步骤.
.Actualtests Oracle 1Z0-007 V05.
.Oracle 9i密码策略--密码重用规.
.Oracle webserver中文介绍-第四.
..NET中用Oracle 10g Single-Sign.
.Oracle9i初始化参数中文说明1.
.oracle开发 表占用空间统计——脚.
.将oracle加载为linux标准系统服务.
.在Linux下打开32位I/O和DMA.
.Access2000迁移到Oracle9i要点说.
.DBA 应遵循的 Oracle 调优原则.
.ORACLE在HP-UX下的系列问题处理(.
.Oracle 10G 最佳20位新特性:RMAN.
.Oracle9i的全文检索技术.
.将oracle设为归档模式启动的方法.
.Oracle9i 数据库管理实务讲座(五).
.10g为用户提供对回滚操作时间的准.
.Oracle学习笔记[一] morinson著.
.ORACLE SQL性能优化系列(八).

Oracle开发人员的 JDOM 和 XML 分析

发表日期:2008-2-9 |



  JDOM使XML在Java中的操作比以往任何时候都更加轻易。
  
  碰巧,你在过去可能已经用过众多Java库中的某一个以操作XML数据结构。那么JDOM(Java文档对象模型,Java Document Object Model)的用途是什么?开发者又为什么需要它呢?
  
  JDOM是用于Java优化的XML数据操作的源代码开放的Java库。尽管它与万维网协会(W3C,World Wide Web Consortium)的DOM类似,但它是一种可供选择的文档对象模型,它不是在DOM基础上构建的,也不以DOM为模型。它们的主要区别是:DOM是与语言无关的,最初是用于Html页的javascript操作,而JDOM专用于Java,因此它利用Java的特性,其中包括方法过载(method overloading)、集合(collection)、映像(reflection)和人们熟悉的编程风格等。对Java编程人员来说,JDOM显得更自然、更"适用"。就像Java优化的RMI(remote method invocation,远程方法调用)库要比与语言无关的CORBA(Common Object Request Broker Architecture,通用对象申请中介体系结构)更自然一样。
  
  你可以根据源代码开放的Apache类型(商业友好)的许可,在jdom.org找到JDOM。它是合作设计开发的,并拥有超过3000个订阅者的邮件列表。此库已经被Sun公司的Java社区进程(JCP,Java Community Process)接受作为Java规范申请(JSR-102),并很快成为正式Java规范。
  
  本系列文章将对JDOM进行技术介绍。本文提供一些关于重要类的信息。下一篇文章将介绍如何在自己的Java程序中应用JDOM。
  
  JDOM软件包结构
  JDOM库包括六个软件包。第一个是org.jdom包,它包括表示XML文档以及其组件的类,这些组件有:Attribute、CDATA、Comment、DocType、Document、Element、EntityRef、Namespace、Processing InstrUCtion和Text等。假如你对XML很熟悉,通过类的名字就可以知道它的用途了。
  
  下一个是org.jdom.input包,它包括用于构建XML文档的类。其中最主要和最重要的类是SAXBuilder。SAXBuilder通过监听输入的XML简单API(SAX,Simple API for XML)事件建立相应的文档。假如需要由一个文件或其他流(stream)建立文档,那就可以采用SAXBuilder。它采用SAX分析器读取流,并根据SAX分析器的"回调"建立文档。这一设计的一个好处就是SAX分析器越快,SAXBuilder也会越快。另一个主要输入类是DOMBuilder。DOMBuilder由DOM树构建。假如预先已经有了一个DOM树,并希望用JDOM版本的树来代替,那么采用DOMBuilder是非常方便的。
  
  对于这些可能的生成器来说,不存在什么限制。例如,由于Xerces有Xerces本地接口(XNI,Xerces Native Interface),可用于在比SAX较低的层次上进行操作,所以编写一个XNIBuilder以支持某些分析器知识,而不采用SAX,就可能很有意义。一个构成JDOM项目的很流行的生成器是ResultSetBuilder。它利用JDBC结果集合,生成一个XML文档,用以表示SQL结果,根据是哪种元素和哪种属性,它有多种不同的编排。
  
  org.jdom.output包中包括输出XML文档的一些类。其中最重要的类是XMLOutputter。它将文档转换为一个字节流,用于输出到文件、流和接口程序(sockets)中。XMLOutputter具有很多支持原始输出(raw output)、完美输出(pretty output)、压缩输出或其他输出的非凡配置选项。它是一个相当复杂的类。
这可能是为什么DOM level2中仍然没有这种能力的原因。
  
  其他输出器(outoutter)包括SAXOutputter,它可以产生基于文档内容的SAX事件。尽管它看起来有些神秘,但事实证实这个类在XSLT变换中极其有用,这是因为相对于将文档数据传递到一个引擎的字节来说,SAX事件是一种更为有效的方法。还有一个DOMOutputter输出器,它用于生成表示文档的DOM树。一个有趣的输出器是JTreeOutputter,它只有几十行代码,它可以建立表示文档的JTree。将它与ResultSetBuilder联合起来后,仅用几行代码就可以通过SQL查询得到结果的树视图。
  
  注重,与在DOM中不同,文档并不与它们的生成器捆绑在一起。这就形成了一个出色的模型,在这种模型中,你可以用一些类保持数据,另一些类构造数据,其他一些类来定制数据。可以随意进行混合和匹配。
  
  org.jdom.transform和org.jdom.XPath包中还有支持内置的XSLT转换和XPath查找的类。
  
  最后,org.jdom.adapters包中还包括在DOM交互中对库提供帮助的类。该库的使用者永远不需要调用这一软件包中的类。这些类是随时可用的,因为每个DOM实现都为特定的引导任务生成不同的方法名称,所以适配器类将标准调用转换成分析器专用的调用。Java API for XML Processing(JAXP)为解决此问题提供了另一种方法,事实上降低了对这些类的需要,但是这些类仍然保留了下来,这是因为由于许可证的原因,并不是所有的分析器都支持JAXP,也不是任何地方都安装有JAXP。
  
  生成文档
  文档由org.jdom.Documentclass表示,你可以从头建立一个文档:
  
  // This builds: <root/>
  
  Document doc = new Document(new Element("root"));
  
  也可以由文件、流、系统ID或URL建立一个文档:
  
  // This builds a document of whatever's in the given resource
  SAXBuilder builder = new SAXBuilder();
  Document doc = builder.build(url);
  
  将几个调用结合在一起,可以很轻易地在JDOM中建立一个简单的文档:
  
  // This builds: <root>This is the root</root>
  Document doc = new Document();
  
  Element e = new Element("root");
  e.setText("This is the root");
  doc.addContent(e);
  
  假如你是一位非常有才能的用户,你可能更愿意使用"方法链",在这种方式中,多种方法是依次调用的。这种方式之所以有效是因为集合方法返回它们所作用的对象,下面是一个例子:
  
  
  Document doc = new Document(
  new Element("root").setText("This is the root"));
  
  为了进行对比,下面给出如何用JAXP/DOM创建相同的文档:
  
  // JAXP/DOM
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  
  DocumentBuilder builder = factory.newDocumentBuilder();
  Document doc = builder.newDocument();
  Element root = doc.createElement("root");
  Text text = doc.createText("This is the root");
  root.appendChild(text);
  doc.appendChild(root);
  
  用SAXBuilder生成文档
  如前所示,SAXBuilder提供了一种由任意面向字节的数据源来创建文档的简单机制。缺省的无参数SAXBuilder()构造器在后台利用JAXP来选择一个SAX分析器。假如你希望改变分析器,则可以设置javax.xml.parsers.SAXParserFactory系统属性,以指向你的分析器提供的SAXParser Factory实现。对于Oracle9i版本2 XML分析器,应当这样做:
  
  java -Djavax.xml.parsers.SAXParserFactory=
  oracle.xml.jaxp.JXSAXParserFactory YourApp
  
  对于Xerces分析器,应当这样做:
  
  java -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp
  .SAXParserFactoryImpl YourApp
  
  假如没有安装JAXP,SAXBuilder缺省地指向Apache Xerces。一旦你创建了SAXBuilder实例,你就可以在生成器中设置几个属性,其中包括:
  
  setValidation(boolean validate)
  
  这一方法告诉分析器在生成过程中是否根据Document Type Definition(DTD,文档类型定义)进行验证。缺省设置为"否"(off)。所用的DTD是文档中DocType引用的一个。根据任何其他DTD进行验证是不可能的,因为还没有分析器支持这一功能。

  
  setIgnoringElementContentWhitespace(boolean ignoring)
  
  这一方法告诉分析器是否忽略元素内容中所谓的"可忽略空格(whitespace)"。按照XML1.0规范,元素内容中的空格必须由分析器保留,但当根据DTD进行验证时,分析器可能知道文档的特定部分不会支持空格,所以这一区域的任何空格都是"可忽略的"。其缺省设置为"否"(off)。假如你不希望使一个文档"往返旅行",将输入内容以原样输出的话,那么将这一开关打开通常会使性能略微有些提高。注重,这一标志只有在验证已完成时才有效。而进行验证会导致性能下降,所以这一技巧仅在已应用验证时才有用。
  
  setFeature(String name, String value)
  
  这一方法设置基础SAX分析器的一个特性。这是一个原始的"传递(pass-through)"调用,所以在应用这一方法时应非常小心,因为对特性的错误设置(如弄错名称空间)可能会中断JDOM行为。而且,依靠任何特定分析器特性都会限制可移植性。这一调用对于启用模式验证最为有用。
  
  setProperty(String name, Object value)
  
  这一方法设置基础SAX分析器的一个属性。它也是一个原始的"传递"调用,它具有同样的风险,而且对于有才能的用户同样有用,非凡是对于模式验证。下面的代码结合这些方法,利用JAXP选择的分析器读取本地文件,验证功能有效,可忽略的空格都被忽略。
  
  SAXBuilder builder = new SAXBuilder();
  builder.setValidation(true);
  builder.setIgnoringElementContentWhitespace(true);
  Document doc = builder.build(new File("/tmp/foo.xml"));
  
  用XMLOutputter输出
  文档可以以多种不同的格式输出,但最常见的输出格式还是字节流。在JDOM中,XMLOutputter类提供这一能力。它的缺省无参数生成器试图忠实地
上一篇:Oracle 和 PHP 使用入门 人气:386
下一篇:Oracle 10gas 之 集群 人气:457
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号