Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 *    Qizx/open 4.1
 *
 * This code is the open-source version of Qizx.
 * Copyright (C) 2004-2009 Axyana Software -- All rights reserved.
 *
 * The contents of this file are subject to the Mozilla Public License 
 *  Version 1.1 (the "License"); you may not use this file except in 
 *  compliance with the License. You may obtain a copy of the License at
 *  http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 *  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 *  for the specific language governing rights and limitations under the
 *  License.
 *
 * The Initial Developer of the Original Code is Xavier Franc - Axyana Software.
 *
 */

public class Main {
    /**
     * Unescapes specified string. Inverse operation of escapeXML(...).
     * 
     * @param text string to be unescaped
     * @return unescaped string
     */
    public static final String unescapeXML(String text) {
        StringBuffer unescaped = new StringBuffer();
        unescapeXML(text, 0, text.length(), unescaped);
        return unescaped.toString();
    }

    /**
     * Unescapes specified string. Inverse operation of escapeXML().
     * 
     * @param text string to be unescaped
     * @param offset specifies first character in string to be unescaped
     * @param length number of characters in string to be unescaped
     * @param unescaped buffer used to store unescaped string (characters are
     *        appended to this buffer)
     */
    public static final void unescapeXML(String text, int offset, int length, StringBuffer unescaped) {
        int end = offset + length;

        for (int i = offset; i < end; ++i) {
            char c = text.charAt(i);

            if (c == '&') {
                StringBuffer charRef = new StringBuffer();

                ++i;
                while (i < end) {
                    c = text.charAt(i);
                    if (c == ';')
                        break;
                    charRef.append(c);
                    ++i;
                }

                c = parseCharRef(charRef.toString());
            }

            unescaped.append(c);
        }
    }

    private static char parseCharRef(String charRef) {
        if (charRef.length() >= 2 && charRef.charAt(0) == '#') {
            int i;

            try {
                if (charRef.charAt(1) == 'x')
                    i = Integer.parseInt(charRef.substring(2), 16);
                else
                    i = Integer.parseInt(charRef.substring(1));
            } catch (NumberFormatException e) {
                i = -1;
            }

            if (i < 0 || i > Character.MAX_VALUE)
                return '?';
            else
                return (char) i;
        }
        if (charRef.equals("amp")) {
            return '&';
        }
        if (charRef.equals("apos")) {
            return '\'';
        }
        if (charRef.equals("quot")) {
            return '\"';
        }
        if (charRef.equals("lt")) {
            return '<';
        }
        if (charRef.equals("gt")) {
            return '>';
        } else {
            return '?';
        }
    }
}