w3cdomhandler.java

来自「Mobile 应用程序使用 Java Micro Edition (Java M」· Java 代码 · 共 90 行

JAVA
90
字号
/* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.xml.bind.annotation;import org.w3c.dom.Document;import org.w3c.dom.DocumentFragment;import org.w3c.dom.Element;import org.w3c.dom.Node;import javax.xml.bind.ValidationEventHandler;import javax.xml.parsers.DocumentBuilder;import javax.xml.transform.Source;import javax.xml.transform.dom.DOMResult;import javax.xml.transform.dom.DOMSource;/** * {@link DomHandler} implementation for W3C DOM (<code>org.w3c.dom</code> package.) * * @author Kohsuke Kawaguchi * @since JAXB2.0 */public class W3CDomHandler implements DomHandler<Element,DOMResult> {    private DocumentBuilder builder;    /**     * Default constructor.     *     * It is up to a JAXB provider to decide which DOM implementation     * to use or how that is configured.     */    public W3CDomHandler() {        this.builder = null;    }    /**     * Constructor that allows applications to specify which DOM implementation     * to be used.     *     * @param builder     *      must not be null. JAXB uses this {@link DocumentBuilder} to create     *      a new element.     */    public W3CDomHandler(DocumentBuilder builder) {        if(builder==null)            throw new IllegalArgumentException();        this.builder = builder;    }    public DocumentBuilder getBuilder() {        return builder;    }    public void setBuilder(DocumentBuilder builder) {        this.builder = builder;    }    public DOMResult createUnmarshaller(ValidationEventHandler errorHandler) {        if(builder==null)            return new DOMResult();        else            return new DOMResult(builder.newDocument());    }    public Element getElement(DOMResult r) {        // JAXP spec is ambiguous about what really happens in this case,        // so work defensively        Node n = r.getNode();        if( n instanceof Document ) {            return ((Document)n).getDocumentElement();        }        if( n instanceof Element )            return (Element)n;        if( n instanceof DocumentFragment )            return (Element)n.getChildNodes().item(0);        // if the result object contains something strange,        // it is not a user problem, but it is a JAXB provider's problem.        // That's why we throw a runtime exception.        throw new IllegalStateException(n.toString());    }    public Source marshal(Element element, ValidationEventHandler errorHandler) {        return new DOMSource(element);    }}

⌨️ 快捷键说明

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