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

📄 utilxml.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    Element childElement = (Element) node;                    elements.add(childElement);                }            } while ((node = node.getNextSibling()) != null);        }        return elements;    }    /** Return a List of Element objects that have the given name and are     * immediate children of the given element; if name is null, all child     * elements will be included. */    public static List childElementList(Element element, Set childElementNames) {        if (element == null) return null;        List elements = FastList.newInstance();        if (childElementNames == null) return elements;        Node node = element.getFirstChild();        if (node != null) {            do {                if (node.getNodeType() == Node.ELEMENT_NODE && childElementNames.contains(node.getNodeName())) {                    Element childElement = (Element) node;                    elements.add(childElement);                }            } while ((node = node.getNextSibling()) != null);        }        return elements;    }    /** Return the first child Element     * returns the first element. */    public static Element firstChildElement(Element element, Set childElementNames) {        if (element == null) return null;        // get the first element with the given name        Node node = element.getFirstChild();        if (node != null) {            do {                if (node.getNodeType() == Node.ELEMENT_NODE && childElementNames.contains(node.getNodeName())) {                    Element childElement = (Element) node;                    return childElement;                }            } while ((node = node.getNextSibling()) != null);        }        return null;    }    /** Return the first child Element     * returns the first element. */    public static Element firstChildElement(Element element) {        if (element == null) return null;        // get the first element with the given name        Node node = element.getFirstChild();        if (node != null) {            do {                if (node.getNodeType() == Node.ELEMENT_NODE) {                    Element childElement = (Element) node;                    return childElement;                }            } while ((node = node.getNextSibling()) != null);        }        return null;    }    /** Return the first child Element with the given name; if name is null     * returns the first element. */    public static Element firstChildElement(Element element, String childElementName) {        if (element == null) return null;        // get the first element with the given name        Node node = element.getFirstChild();        if (node != null) {            do {                if (node.getNodeType() == Node.ELEMENT_NODE && (childElementName == null ||                        childElementName.equals(node.getNodeName()))) {                    Element childElement = (Element) node;                    return childElement;                }            } while ((node = node.getNextSibling()) != null);        }        return null;    }    /** Return the first child Element with the given name; if name is null     * returns the first element. */    public static Element firstChildElement(Element element, String childElementName, String attrName, String attrValue) {        if (element == null) return null;        // get the first element with the given name        Node node = element.getFirstChild();        if (node != null) {            do {                if (node.getNodeType() == Node.ELEMENT_NODE && (childElementName == null ||                        childElementName.equals(node.getNodeName()))) {                    Element childElement = (Element) node;                    String value = childElement.getAttribute(attrName);                    if (value != null && value.equals(attrValue)) {                        return childElement;                    }                }            } while ((node = node.getNextSibling()) != null);        }        return null;    }    /** Return the text (node value) contained by the named child node. */    public static String childElementValue(Element element, String childElementName) {        if (element == null) return null;        // get the value of the first element with the given name        Element childElement = firstChildElement(element, childElementName);        return elementValue(childElement);    }    /** Return the text (node value) contained by the named child node or a default value if null. */    public static String childElementValue(Element element, String childElementName, String defaultValue) {        if (element == null) return defaultValue;        // get the value of the first element with the given name        Element childElement = firstChildElement(element, childElementName);        String elementValue = elementValue(childElement);        if (elementValue == null || elementValue.length() == 0)            return defaultValue;        else            return elementValue;    }    /** Return the text (node value) of the first node under this, works best if normalized. */    public static String elementValue(Element element) {        if (element == null) return null;        // make sure we get all the text there...        element.normalize();        Node textNode = element.getFirstChild();        if (textNode == null) return null;        StringBuffer valueBuffer = new StringBuffer();        do {            if (textNode.getNodeType() == Node.CDATA_SECTION_NODE || textNode.getNodeType() == Node.TEXT_NODE) {                valueBuffer.append(textNode.getNodeValue());            }        } while ((textNode = textNode.getNextSibling()) != null);        return valueBuffer.toString();    }    public static String checkEmpty(String string) {        if (string != null && string.length() > 0)            return string;        else            return "";    }    public static String checkEmpty(String string1, String string2) {        if (string1 != null && string1.length() > 0)            return string1;        else if (string2 != null && string2.length() > 0)            return string2;        else            return "";    }    public static String checkEmpty(String string1, String string2, String string3) {        if (string1 != null && string1.length() > 0)            return string1;        else if (string2 != null && string2.length() > 0)            return string2;        else if (string3 != null && string3.length() > 0)            return string3;        else            return "";    }    public static boolean checkBoolean(String str) {        return checkBoolean(str, false);    }    public static boolean checkBoolean(String str, boolean defaultValue) {        if (defaultValue) {            //default to true, ie anything but false is true            return !"false".equals(str);        } else {            //default to false, ie anything but true is false            return "true".equals(str);        }    }    /**     * Local entity resolver to handle J2EE DTDs. With this a http connection     * to sun is not needed during deployment.     * Function boolean hadDTD() is here to avoid validation errors in     * descriptors that do not have a DOCTYPE declaration.     */    public static class LocalResolver implements EntityResolver {        private boolean hasDTD = false;        private EntityResolver defaultResolver;        public LocalResolver(EntityResolver defaultResolver) {            this.defaultResolver = defaultResolver;        }        /**         * Returns DTD inputSource. If DTD was found in the dtds Map and inputSource was created         * flag hasDTD is set to true.         * @param publicId - Public ID of DTD         * @param systemId - System ID of DTD         * @return InputSource of DTD         */        public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {            //Debug.logInfo("resolving XML entity with publicId [" + publicId + "], systemId [" + systemId + "]", module);            hasDTD = false;            String dtd = UtilProperties.getSplitPropertyValue(UtilURL.fromResource("localdtds.properties"), publicId);            if (UtilValidate.isNotEmpty(dtd)) {                if (Debug.verboseOn()) Debug.logVerbose("[UtilXml.LocalResolver.resolveEntity] resolving DTD with publicId [" + publicId +                        "], systemId [" + systemId + "] and the dtd file is [" + dtd + "]", module);                try {                    URL dtdURL = UtilURL.fromResource(dtd);                    if (dtdURL == null) {                        throw new GeneralException("Local DTD not found - " + dtd);                       }                    InputStream dtdStream = dtdURL.openStream();                    InputSource inputSource = new InputSource(dtdStream);                    inputSource.setPublicId(publicId);                    hasDTD = true;                    if (Debug.verboseOn()) Debug.logVerbose("[UtilXml.LocalResolver.resolveEntity] got LOCAL DTD input source with publicId [" +                            publicId + "] and the dtd file is [" + dtd + "]", module);                    return inputSource;                } catch (Exception e) {                    Debug.logWarning(e, module);                }            } else {                // nothing found by the public ID, try looking at the systemId, or at least the filename part of it and look for that on the classpath                int lastSlash = systemId.lastIndexOf("/");                String filename = null;                if (lastSlash == -1) {                    filename = systemId;                } else {                    filename = systemId.substring(lastSlash + 1);                }                                URL resourceUrl = UtilURL.fromResource(filename);                                if (resourceUrl != null) {                    InputStream resStream = resourceUrl.openStream();                    InputSource inputSource = new InputSource(resStream);                        if (UtilValidate.isNotEmpty(publicId)) {                        inputSource.setPublicId(publicId);                    }                    hasDTD = true;                    if (Debug.verboseOn()) Debug.logVerbose("[UtilXml.LocalResolver.resolveEntity] got LOCAL DTD/Schema input source with publicId [" +                            publicId + "] and the file/resource is [" + filename + "]", module);                    return inputSource;                } else {                    Debug.logWarning("[UtilXml.LocalResolver.resolveEntity] could not find LOCAL DTD/Schema with publicId [" +                            publicId + "] and the file/resource is [" + filename + "]", module);                    return null;                }            }            //Debug.logInfo("[UtilXml.LocalResolver.resolveEntity] local resolve failed for DTD with publicId [" +            //        publicId + "] and the dtd file is [" + dtd + "], trying defaultResolver", module);            return defaultResolver.resolveEntity(publicId, systemId);        }        /**         * Returns the boolean value to inform id DTD was found in the XML file or not         * @return boolean - true if DTD was found in XML         */        public boolean hasDTD() {            return hasDTD;        }    }    /** Local error handler for entity resolver to DocumentBuilder parser.     * Error is printed to output just if DTD was detected in the XML file.     */    public static class LocalErrorHandler implements ErrorHandler {        private String docDescription;        private LocalResolver localResolver;        public LocalErrorHandler(String docDescription, LocalResolver localResolver) {            this.docDescription = docDescription;            this.localResolver = localResolver;        }        public void error(SAXParseException exception) {            if (localResolver.hasDTD()) {                Debug.logError("XmlFileLoader: File "                    + docDescription                    + " process error. Line: "                    + String.valueOf(exception.getLineNumber())                    + ". Error message: "                    + exception.getMessage(), module                );            }        }        public void fatalError(SAXParseException exception) {            if (localResolver.hasDTD()) {                Debug.logError("XmlFileLoader: File "                    + docDescription                    + " process fatal error. Line: "                    + String.valueOf(exception.getLineNumber())                    + ". Error message: "                    + exception.getMessage(), module                );            }        }        public void warning(SAXParseException exception) {            if (localResolver.hasDTD()) {                Debug.logError("XmlFileLoader: File "                    + docDescription                    + " process warning. Line: "                    + String.valueOf(exception.getLineNumber())                    + ". Error message: "                    + exception.getMessage(), module                );            }        }    }}

⌨️ 快捷键说明

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