Java tutorial
//package com.java2s; /* * @(#)$Id: XMLUtils.java 3619 2008-03-26 07:23:03Z yui $ * * Copyright 2006-2008 Makoto YUI * * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: * Makoto YUI - initial implementation */ public class Main { public static String unescapeXML(String str) { if (str == null || str.length() == 0) return str; final StringBuilder buf = new StringBuilder(255); final int len = str.length(); for (int i = 0; i < len; ++i) { final char c = str.charAt(i); if (c == '&') { final int pos = str.indexOf(';', i); if (pos == -1) { buf.append('&'); } else if (str.charAt(i + 1) == '#') { // &#unicode; final int val = Integer.parseInt(str.substring(i + 2, pos), 16); buf.append((char) val); // '
' -> '\r' i = pos; } else { final String substr = str.substring(i, pos + 1); if (substr.equals("&")) { buf.append('&'); } else if (substr.equals("<")) { buf.append('<'); } else if (substr.equals(">")) { buf.append('>'); } else if (substr.equals(""")) { buf.append('"'); } else if (substr.equals("'")) { buf.append('\''); } else { throw new IllegalStateException( "Invalid XML charactor `" + substr + "` is detected at " + i + " of " + str + '!'); } i = pos; } } else { buf.append(c); } } return buf.toString(); } }