Converts a plain text string into valid XML string Output stream must convert stream to UTF-8 when saving to disk. - Java XML

Java examples for XML:XML String Escape

Description

Converts a plain text string into valid XML string Output stream must convert stream to UTF-8 when saving to disk.

Demo Code

/* *************************************************************************
 *
 *  TMPotter - Bi-text Aligner/TMX Editor
 *
 *  Copyright (C) 2015 Hiroshi Miura//from  w ww .  j  a  v a  2  s  .c o  m
 *
 *  Part of this come from OmegaT.
 *
 *  Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk
 *
 *  This file is part of TMPotter.
 *
 *  TMPotter is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  TMPotter is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 * 
 *  You should have received a copy of the GNU General Public License
 *  along with TMPotter.  If not, see http://www.gnu.org/licenses/.
 *
 * *************************************************************************/
//package com.java2s;

public class Main {
    public static void main(String[] argv) throws Exception {
        String plaintext = "java2s.com";
        System.out.println(getValidXMLText(plaintext));
    }

    /**
     *  Converts a plaintext string into valid XML string
     *
     *  Output stream must convert stream to UTF-8 when saving to disk.
     * 
     * @param plaintext
     * @return 
     */
    final public static String getValidXMLText(final String plaintext) {
        final StringBuilder out = new StringBuilder();
        final String text = fixChars(plaintext);

        for (int i = 0; i < text.length(); i++)
            out.append(getValidXMLChar(text.charAt(i)));

        return (out.toString());
    }

    /**
     *  Replace invalid XML chars by spaces. See supported chars at
     *  http://www.w3.org/TR/2006/REC-xml-20060816/#charsets.
     *
     *  @param str input stream
     *  @return result stream
     */
    final public static String fixChars(final String str) {
        char[] result = new char[str.length()];

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);

            if (c < 0x20) {
                if (c != 0x09 && c != 0x0A && c != 0x0D)
                    c = ' ';
            } else if (c >= 0x20 && c <= 0xD7FF) {
            } else if (c >= 0xE000 && c <= 0xFFFD) {
            } else if (c >= 0x10000 && c <= 0x10FFFF) {
            } else
                c = ' ';

            result[i] = c;
        }

        return (new String(result));
    }

    /**
     *  Converts a single char into a valid XML character
     *
     *  Output stream must convert stream to UTF-8 when saving to disk.
     */
    private static String getValidXMLChar(final char ch) {
        switch (ch) {
        //case '\'': return "&apos;";
        case '&':
            return "&amp;";
        case '>':
            return "&gt;";
        case '<':
            return "&lt;";
        case '"':
            return "&quot;";
        default:
            return String.valueOf(ch);
        }
    }
}

Related Tutorials