📄 domutil.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 + -