private static void print()

in ws-security-common/src/main/java/org/apache/wss4j/common/util/DOM2Writer.java [87:220]


    private static void print(Node node, NSStack namespaceStack,
                              PrintWriter out, boolean pretty,
                              int indent) {
        if (node == null) {
            return;
        }
        boolean hasChildren = false;
        int type = node.getNodeType();
        switch (type) {
            case Node.DOCUMENT_NODE:
                Node child = node.getFirstChild();
                while (child != null) {
                    print(child, namespaceStack, out, pretty, indent);
                    child = child.getNextSibling();
                }
                break;
            case Node.ELEMENT_NODE:
                namespaceStack.push();
                if (pretty) {
                    for (int i = 0; i < indent; i++) {
                        out.print(' ');
                    }
                }
                out.print('<' + node.getNodeName());
                String elPrefix = node.getPrefix();
                String elNamespaceURI = node.getNamespaceURI();
                if (elPrefix != null && elNamespaceURI != null && elPrefix.length() > 0) {
                    boolean prefixIsDeclared = false;
                    try {
                        String namespaceURI = namespaceStack.getNamespaceURI(elPrefix);
                        if (elNamespaceURI.equals(namespaceURI)) {
                            prefixIsDeclared = true;
                        }
                    } catch (IllegalArgumentException e) { //NOPMD
                        //
                    }
                    if (!prefixIsDeclared) {
                        printNamespaceDecl(node, namespaceStack, out);
                    }
                }
                NamedNodeMap attrs = node.getAttributes();
                int len = (attrs != null) ? attrs.getLength() : 0;
                for (int i = 0; i < len; i++) {
                    Attr attr = (Attr) attrs.item(i);
                    out.print(' ' + attr.getNodeName() + "=\"");
                    normalize(attr.getValue(), out);
                    out.print('\"');
                    String attrPrefix = attr.getPrefix();
                    String attrNamespaceURI = attr.getNamespaceURI();
                    if (attrPrefix != null && attrNamespaceURI != null) {
                        boolean prefixIsDeclared = false;
                        try {
                            String namespaceURI = namespaceStack.getNamespaceURI(attrPrefix);
                            if (attrNamespaceURI.equals(namespaceURI)) {
                                prefixIsDeclared = true;
                            }
                        } catch (IllegalArgumentException e) { //NOPMD
                            //
                        }
                        if (!prefixIsDeclared) {
                            printNamespaceDecl(attr, namespaceStack, out);
                        }
                    }
                }
                child = node.getFirstChild();
                if (child != null) {
                    hasChildren = true;
                    out.print('>');
                    if (pretty) {
                        out.print(LS);
                    }
                    while (child != null) {
                        print(child, namespaceStack, out, pretty, indent + 1);
                        child = child.getNextSibling();
                    }
                } else {
                    hasChildren = false;
                    out.print("/>");
                    if (pretty) {
                        out.print(LS);
                    }
                }
                namespaceStack.pop();
                break;
            case Node.ENTITY_REFERENCE_NODE:
                out.print('&');
                out.print(node.getNodeName());
                out.print(';');
                break;
            case Node.CDATA_SECTION_NODE:
                out.print("<![CDATA[");
                out.print(node.getNodeValue());
                out.print("]]>");
                break;
            case Node.TEXT_NODE:
                normalize(node.getNodeValue(), out);
                break;
            case Node.COMMENT_NODE:
                out.print("<!--");
                out.print(node.getNodeValue());
                out.print("-->");
                if (pretty) {
                    out.print(LS);
                }
                break;
            case Node.PROCESSING_INSTRUCTION_NODE:
                out.print("<?");
                out.print(node.getNodeName());
                String data = node.getNodeValue();
                if (data != null && data.length() > 0) {
                    out.print(' ');
                    out.print(data);
                }
                out.println("?>");
                if (pretty) {
                    out.print(LS);
                }
                break;
        }
        if (type == Node.ELEMENT_NODE && hasChildren) {
            if (pretty) {
                for (int i = 0; i < indent; i++) {
                    out.print(' ');
                }
            }
            out.print("</");
            out.print(node.getNodeName());
            out.print('>');
            if (pretty) {
                out.print(LS);
            }
            hasChildren = false;
        }
    }