Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/**
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
 *
 * The contents of this file are subject to the terms
 * of the Common Development and Distribution License
 * (the License). You may not use this file except in
 * compliance with the License.
 *
 * You can obtain a copy of the License at
 * https://opensso.dev.java.net/public/CDDLv1.0.html or
 * opensso/legal/CDDLv1.0.txt
 * See the License for the specific language governing
 * permission and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL
 * Header Notice in each file and include the License file
 * at opensso/legal/CDDLv1.0.txt.
 * If applicable, add the following below the CDDL Header,
 * with the fields enclosed by brackets [] replaced by
 * your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * $Id: XMLUtils.java,v 1.15 2009/10/19 18:19:20 asyhuang Exp $
 *
 */

import org.w3c.dom.Attr;

import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import java.io.ByteArrayOutputStream;

import java.util.HashSet;

import java.util.Set;

public class Main {
    /**
     * Print SAML Attribute Element and replace its prefix with the input
     * prefix.
     * 
     * @param node
     *            A DOM tree Node
     * @param prefix
     *            A String representing the new prefix
     * @return An xml String representation of the DOM tree.
     */
    public static String printAttributeValue(Element node, String prefix) {
        if (node == null) {
            return null;
        }

        StringBuffer xml = new StringBuffer(100);
        xml.append('<');
        xml.append(prefix).append(node.getLocalName());
        NamedNodeMap attrs = node.getAttributes();
        int length = attrs.getLength();
        for (int i = 0; i < length; i++) {
            Attr attr = (Attr) attrs.item(i);
            xml.append(' ');
            xml.append(attr.getNodeName());
            xml.append("=\"");
            // xml.append(normalize(attr.getNodeValue()));
            xml.append(attr.getNodeValue());
            xml.append('"');
        }
        xml.append('>');
        NodeList children = node.getChildNodes();
        if (children != null) {
            int len = children.getLength();
            for (int i = 0; i < len; i++) {
                xml.append(print(children.item(i)));
            }
        }
        xml.append("</");
        xml.append(prefix).append(node.getLocalName());
        xml.append('>');

        return xml.toString();

    }

    public static Set getChildNodes(Node parentNode, String childName) {
        Set retVal = new HashSet();
        NodeList children = parentNode.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node node = children.item(i);
            if (node.getNodeName().equalsIgnoreCase(childName)) {
                retVal.add(node);
            }
        }
        return (retVal);
    }

    /**
     * Print a Node tree recursively using UTF-8 encoding.
     * 
     * @param node
     *            A DOM tree Node
     * @return An xml String representation of the DOM tree.
     */
    public static String print(Node node) {
        return print(node, "UTF-8");
    }

    /**
     * Prints a Node tree recursively.
     * @param node A DOM tree Node
     * @param encoding character encoding
     * @return An xml String representation of the DOM tree.
     */
    public static String print(Node node, String encoding) {
        if (node == null) {
            return null;
        }

        try {
            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer();
            transformer.setOutputProperty("omit-xml-declaration", "yes");
            transformer.setOutputProperty("encoding", encoding);
            DOMSource source = new DOMSource(node);
            ByteArrayOutputStream os = new ByteArrayOutputStream(2000);
            StreamResult result = new StreamResult(os);
            transformer.transform(source, result);
            return os.toString(encoding);
        } catch (Exception e) {
            return null;
        }
    }
}