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

📄 domoutputter.java

📁 openlogic-jdom-1.1-all-src-1.zip 可以用于操作xml文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            }            catch (ClassNotFoundException e) {                // e.printStackTrace();            }            catch (IllegalAccessException e) {                // e.printStackTrace();            }            catch (InstantiationException e) {                // e.printStackTrace();            }        }        // If no DOM doc yet, try to use a hard coded default        try {            DOMAdapter adapter = (DOMAdapter)                Class.forName(DEFAULT_ADAPTER_CLASS).newInstance();            return adapter.createDocument(dt);            // System.out.println("Using default " +            //   DEFAULT_ADAPTER_CLASS);        }        catch (ClassNotFoundException e) {            // e.printStackTrace();        }        catch (IllegalAccessException e) {            // e.printStackTrace();        }        catch (InstantiationException e) {            // e.printStackTrace();        }        throw new JDOMException("No JAXP or default parser available");            }    private org.w3c.dom.Element output(Element element,                                         org.w3c.dom.Document domDoc,                                         NamespaceStack namespaces)                                         throws JDOMException {        try {            int previouslyDeclaredNamespaces = namespaces.size();            org.w3c.dom.Element domElement = null;            if (element.getNamespace() == Namespace.NO_NAMESPACE) {                // No namespace, use createElement                domElement = forceNamespaceAware ?                             domDoc.createElementNS(null, element.getQualifiedName())                             : domDoc.createElement(element.getQualifiedName());            }            else {                domElement = domDoc.createElementNS(                                          element.getNamespaceURI(),                                          element.getQualifiedName());            }            // Add namespace attributes, beginning with the element's own            // Do this only if it's not the XML namespace and it's            // not the NO_NAMESPACE with the prefix "" not yet mapped            // (we do output xmlns="" if the "" prefix was already used             // and we need to reclaim it for the NO_NAMESPACE)            Namespace ns = element.getNamespace();            if (ns != Namespace.XML_NAMESPACE &&                           !(ns == Namespace.NO_NAMESPACE &&                              namespaces.getURI("") == null)) {                String prefix = ns.getPrefix();                String uri = namespaces.getURI(prefix);                if (!ns.getURI().equals(uri)) { // output a new namespace decl                    namespaces.push(ns);                    String attrName = getXmlnsTagFor(ns);                    domElement.setAttribute(attrName, ns.getURI());                }            }            // Add additional namespaces also            Iterator itr = element.getAdditionalNamespaces().iterator();            while (itr.hasNext()) {                Namespace additional = (Namespace)itr.next();                String prefix = additional.getPrefix();                String uri = namespaces.getURI(prefix);                if (!additional.getURI().equals(uri)) {                    String attrName = getXmlnsTagFor(additional);                    domElement.setAttribute(attrName, additional.getURI());                    namespaces.push(additional);                }            }            // Add attributes to the DOM element            itr = element.getAttributes().iterator();            while (itr.hasNext()) {                Attribute attribute = (Attribute) itr.next();                domElement.setAttributeNode(output(attribute, domDoc));                Namespace ns1 = attribute.getNamespace();                if ((ns1 != Namespace.NO_NAMESPACE) &&                     (ns1 != Namespace.XML_NAMESPACE)) {                    String prefix = ns1.getPrefix();                    String uri = namespaces.getURI(prefix);                    if (!ns1.getURI().equals(uri)) { // output a new decl                        String attrName = getXmlnsTagFor(ns1);                        domElement.setAttribute(attrName, ns1.getURI());                        namespaces.push(ns1);                    }                }                // Crimson doesn't like setAttributeNS() for non-NS attribs                if (attribute.getNamespace() == Namespace.NO_NAMESPACE) {                    // No namespace, use setAttribute                    if (forceNamespaceAware) {                        domElement.setAttributeNS(null,                                                  attribute.getQualifiedName(),                                                  attribute.getValue());                    } else {                        domElement.setAttribute(attribute.getQualifiedName(),                                                attribute.getValue());                    }                }                else {                    domElement.setAttributeNS(attribute.getNamespaceURI(),                                              attribute.getQualifiedName(),                                              attribute.getValue());                }            }            // Add content to the DOM element            itr = element.getContent().iterator();            while (itr.hasNext()) {                Object node = itr.next();                if (node instanceof Element) {                    Element e = (Element) node;                    org.w3c.dom.Element domElt = output(e, domDoc, namespaces);                    domElement.appendChild(domElt);                }                else if (node instanceof String) {                    String str = (String) node;                    org.w3c.dom.Text domText = domDoc.createTextNode(str);                    domElement.appendChild(domText);                }                else if (node instanceof CDATA) {                    CDATA cdata = (CDATA) node;                    org.w3c.dom.CDATASection domCdata =                        domDoc.createCDATASection(cdata.getText());                    domElement.appendChild(domCdata);                }                else if (node instanceof Text) {                    Text text = (Text) node;                    org.w3c.dom.Text domText =                        domDoc.createTextNode(text.getText());                    domElement.appendChild(domText);                }                else if (node instanceof Comment) {                    Comment comment = (Comment) node;                    org.w3c.dom.Comment domComment =                        domDoc.createComment(comment.getText());                    domElement.appendChild(domComment);                }                else if (node instanceof ProcessingInstruction) {                    ProcessingInstruction pi =                         (ProcessingInstruction) node;                    org.w3c.dom.ProcessingInstruction domPI =                         domDoc.createProcessingInstruction(                         pi.getTarget(), pi.getData());                    domElement.appendChild(domPI);                }                else if (node instanceof EntityRef) {                    EntityRef entity = (EntityRef) node;                    org.w3c.dom.EntityReference domEntity =                        domDoc.createEntityReference(entity.getName());                    domElement.appendChild(domEntity);                }                else {                    throw new JDOMException(                        "Element contained content with type:" +                        node.getClass().getName());                }            }                // Remove declared namespaces from stack            while (namespaces.size() > previouslyDeclaredNamespaces) {                namespaces.pop();            }            return domElement;        }        catch (Exception e) {            throw new JDOMException("Exception outputting Element " +                                    element.getQualifiedName(), e);        }    }    private org.w3c.dom.Attr output(Attribute attribute,                                      org.w3c.dom.Document domDoc)                                      throws JDOMException {         org.w3c.dom.Attr domAttr = null;         try {             if (attribute.getNamespace() == Namespace.NO_NAMESPACE) {                 // No namespace, use createAttribute                 if (forceNamespaceAware) {                     domAttr = domDoc.createAttributeNS(null, attribute.getQualifiedName());                 } else {                     domAttr = domDoc.createAttribute(attribute.getQualifiedName());                 }             }             else {                 domAttr = domDoc.createAttributeNS(attribute.getNamespaceURI(),                                                  attribute.getQualifiedName());             }             domAttr.setValue(attribute.getValue());         } catch (Exception e) {             throw new JDOMException("Exception outputting Attribute " +                                     attribute.getQualifiedName(), e);         }         return domAttr;    }    /**     * This will handle adding any <code>{@link Namespace}</code>     * attributes to the DOM tree.     *     * @param ns <code>Namespace</code> to add definition of     */    private static String getXmlnsTagFor(Namespace ns) {        String attrName = "xmlns";        if (!ns.getPrefix().equals("")) {            attrName += ":";            attrName += ns.getPrefix();        }        return attrName;    }}

⌨️ 快捷键说明

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