快速业务通道

XML和J2EE的组合技术 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
器上的一个静态XML文档,等等。如果想把这些数据加载到Java应用中,我们可以从当前众多的Java语言XML解析器中选用一个,通过它将XML数据装入一个DOM文档,最后遍历文档,将所有这些数据转换到我们应用系统的对象模型中。

下面是个简单的基于DOM的解析程序,可对上述的媒体DTD进行解析。解析器用的是Apache Xerces:

package jaf.xml;    import java.util.*;    import java.io.IOException;    import org.w3c.dom.*;    import org.xml.sax.*;    // XML文档解析程序,使用上述媒体DTD.    public class MediaParser implements ErrorHandler {    /** 使用Apache Xerces解析器 */     org.apache.xerces.parsers.DOMParser mParser =     new org.apache.xerces.parsers.DOMParser();    /** 构造函数 */    public MediaParser() {    // 告诉解析器验证并解析文档     try {       mParser.setFeature( "http://xml.org/sax/features/validation", true);      }     catch (SAXException e) {       System.out.println("Error setting validation on parser:");       e.printStackTrace();      }     // 设置解析器的错误处理句柄     mParser.setErrorHandler(this);    }    /** 解析指定的URL,返回找到的XML文档     */    public Document parse(String url) throws SAXException, IOException {      mParser.parse(url);      Document mediaDoc = mParser.getDocument();      return mediaDoc;     }    /** 解析指定URL的XML文档,将内容转换成 MediaAsset 对象     */    public Collection loadAssets(String url) throws SAXException, IOException {      Document doc = parse(url);      Collection assets = new LinkedList();      NodeList assetNodes = doc.getElementsByTagName("media-asset");      for (int i = 0; i < assetNodes.getLength(); i++) {       Node assetNode = assetNodes.item(i);       MediaAsset asset = new MediaAsset(assetNode);       assets.add(asset);      }      return assets;     }    /**     * 错误处理代码(为简洁起见省略了)     */    }

XML和J2EE的组合技术(3)

时间:2010-09-28 小龙亭 布老虎

MediaParser类的构造函数初始化了一个Xerces DOM解析器。parse()方法告诉解析器到哪个URL去找XML源,然后得到结果文档并返回。loadAssets()方法调用parse()方法从某个XML源加载文档,然后为文档中找到的每个“media-asset”节点创建一个MediaAsset对象。

以下是一个使用MediaAsset类的例子:

package jaf.xml;    import java.util.*;    public class MediaAsset {     // 资源元数据     private String mName = "";     private String mDesc = "";     private Collection mChildren = new LinkedList();     private Vector mTypes = new Vector();     private String mUrn = "";     protected MediaAsset(org.w3c.dom.Node assetNode) {      // 为简洁起见省略后面代码      .      .      .     }    }

因为篇幅的关系省略了MediaAsset类的详细代码,但应用模式依然是清晰的。MediaAsset类遍历文档的节点,当它碰到不同的子节点时,它用子节点的内容填充自己的成员数据。如果它发现了一个嵌套的子资源节点,它只需要创建一个新的MediaAsset对象,然

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号