

Java技术
2005: 03 04 05 06 07 08
09 10 11 12
2006: 01 02
Asp.net
2005: 07 08 09 10 11 12
2006: 01 02

| <!-- DTD for a hypothetical media management system --> <!-- Media assets are the root of the object hierarchy. Assets are also hierarchical - they can contain other assets. --> <!ELEMENT media-asset (name, desc?, type*, media-asset*, urn)> <!-- Metadata about the asset --> <!ELEMENT name (#PCDATA)> <!ELEMENT desc (#PCDATA)> <!ELEMENT type (desc, mime-type?)> <!ELEMENT mime-type (#PCDATA)> <!ELEMENT urn (#PCDATA)> |
| <?xml version="1.0" ?><!DOCTYPE media-asset PUBLIC "-//Jim Farley//DTD Media Assets//EN" "http://localhost/Articles/Sun/dtds/media.dtd";> <media-asset> <name>第14讲</name> <desc>与第14讲相关的所有内容</desc> <!-- 内容对象"lecture 14"的一套子组件 --> <media-asset> <name>讲座的幻灯片</name> <type> <desc>MS PowerPoint</desc> <mime-type>application/vnd.ms-powerpoint</mime-type> </type> <urn>http://javatraining.org/jaf/E123/lecture-14/slides.ppt<;/urn> </media-asset> <media-asset> <name>讲座的视频片断</name> <type> <desc>RealPlayer streaming video</desc> <mime-type>video/vnd.rn-realvideo</mime-type> </type> <urn>http://javatraining.org/jaf/E123/lecture-14/lecture.rv<;/urn> </media-asset> <!-- 讲座开始 --> <urn>http://javatraining.org/jaf/E123/lecture-14/index.jsp<;/urn> </media-asset> |
| 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.nbsp;parse(String url) throws SAXException, IOException { mParser.parse(url); document.nbsp;mediaDoc = mParser.getdocument.); return mediaDoc; } /** 解析指定URL的XML文档,将内容转换成 MediaAsset 对象 */ public Collection loadAssets(String url) throws SAXException, IOException { document.nbsp;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; } /** * 错误处理代码(为简洁起见省略了) */ } |
| 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) { // 为简洁起见省略后面代码 . . . } } |
| <html> <head> <title>第14讲的媒体资源</title> </head> <body> <!-- 引入我们的类 --> <%@ page import="jaf.xml.*" %> <center><H3>Media Assets for Lecture 14:</H3></center> <!-- 定义一个资源对象,以便用于显示 --> <jsp:useBean class="jaf.xml.MediaAsset" id="asset" /> <!-- 从一个先前定义的位置装载资源 --> <% MediaParser parser = new MediaParser(); Collection assets = parser.loadAssets("http://javaschool.org /jaf/E162/lecture14-assets.xml"); Iterator iter = assets.iterator(); %> <table border=0> <tr><th>Name</th><th>Type</th><th>URN</th></tr> <% while (iter.hasNext()) { asset = (MediaAsset)iter.next(); %> <tr><td><jsp:getProperty name="asset" property="name" /></td> <td><jsp:getProperty name="asset" property="type" /></td> <td><jsp:getProperty name="asset" property="URN" /></td> </tr> <% } %> </table> </body> </html> |