⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 domutil.java

📁 数字图书馆的互操作接口
💻 JAVA
字号:
package dli2fe.xml;

/**
 * Title:        Digial Library Interoperable Interface Fudan Edition
 * Description:  This project contains all the classes required for DLI2FE interface. Developers use these classes to implement the wrapper and client side codes. The basic functions of DLI2FE is as follows:
 * Search: Search a digital library source site.
 * Metadata: Fetch metadata for a site.
 * ResultAccess: Get results for a given query.
 * DLI2FE uses Dublin Core as the basic attribute model, DAV/DASL as the general XML-based query language and CORBA as distributed object transportation mechanism.
 * Copyright:    Copyright (c) 2001
 * Company:      Fudan University
 * @author Carl Tao
 * @version 1.0
 */
import dli2fe.DLI2FE;

import org.w3c.dom.*;
import org.w3c.tools.codec.*;
import java.io.*;

/**
 * This is a DOM toolkit described in the DLI2FE Java tutorial.
 */

public class DOMUtil {

  public static void base64Decode(Element bin, OutputStream out) throws IOException, Base64FormatException {

    if(!DLI2FE.base64.equals(bin.getTagName()))
      throw new Base64FormatException("Invalid tag name: " + bin.getTagName() + ". Expected: " + DLI2FE.base64);

    String input = bin.getFirstChild().getNodeValue();
    byte bytes[] = input.getBytes() ;

    Base64Decoder decoder = new Base64Decoder( new ByteArrayInputStream(bytes), out );
    decoder.process();
  }

  public static byte[] base64Decode(Element bin) throws IOException, Base64FormatException {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    base64Decode(bin, out);
    return out.toByteArray();
  }

  public static Element base64Encode(Document doc, InputStream in) throws IOException {

    ByteArrayOutputStream out = new ByteArrayOutputStream () ;
    Base64Encoder encoder = new Base64Encoder(in, out);
    encoder.process();
    return DOMUtil.createTextNode(doc, DLI2FE.Namespace, DLI2FE.base64, out.toString());
  }

  public static Element base64Encode(Document doc, byte[] bytes) throws IOException {

    return base64Encode(doc, new ByteArrayInputStream(bytes));
  }

  public static Document createDocument() {
    return XMLObject.createDocument();
  }

  public static Element createTextNode(Document doc, String namespace, String name, String value) {

    Element node = doc.createElementNS(namespace, name);
    Node text = doc.createTextNode(value);
    node.appendChild(text);
    return node;
  }

  public static Element getChild(Element elem, String name) {

    if(elem == null)
      return null;
    if (name == null)
      name = "*";
    Node p = elem.getFirstChild();
    while(p != null) {
      if(p.getNodeType() == Node.ELEMENT_NODE &&
	 ("*".equals(name) || name.equals(p.getNodeName()) || name.equals(((Element)elem).getLocalName())
         || name.equals(elem.getNamespaceURI() + p.getNodeName())))
	return (Element)p;
      p = p.getNextSibling();
    }
    return null;
  }

  /**
   * use "*" as name to get all child elements
   */
  public static NodeList getChildElements(Element elem, String name) {

    NodeListImpl list = new NodeListImpl();
    Node p = elem.getFirstChild();
    while(p != null) {
      if(p.getNodeType() == Node.ELEMENT_NODE &&
	 ("*".equals(name) || p.getNodeName().equals(name) || (elem.getNamespaceURI()+p.getNodeName()).equals(name)))
	list.addElement(p);
      p = p.getNextSibling();
    }
    return list;
  }

  public static String getChildText(Element elem, String name) {

    Element el = getChild(elem, name);
    return getText(el);
  }

  public static Element getDescendant(Element elem, String name) {

    return (Element)elem.getElementsByTagName(name).item(0);
  }

  public static Element getDescendant(Element elem, String namespaceURI, String name) {
    return (Element)elem.getElementsByTagNameNS(namespaceURI, name).item(0);
  }

  public static String getDescendantText(Element elem, String name) {

    Element el = (Element)elem.getElementsByTagName(name).item(0);
    return getText(el);
  }

  public static String getDescendantText(Element elem, String namespaceURI, String name) {

    Element el = (Element)elem.getElementsByTagNameNS(namespaceURI, name).item(0);
    return getText(el);
  }

  public static String getText(Element el) {
    if(el != null) {
      Node txt = el.getFirstChild();
      if(txt != null)
	return txt.getNodeValue();
    }
    return null;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -