Java 怎么通过将下面显示的实体引用替换为XML规范定义的等效字符来取消转义 XML字符串

2019年8月2日23:31:28Java 怎么通过将下面显示的实体引用替换为XML规范定义的等效字符来取消转义 XML字符串已关闭评论 483 936字阅读3分7秒

1.简介

Java 怎么通过将下面显示的实体引用替换为XML规范定义的等效字符来取消转义 XML字符串?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */
public class Main {

  public static void main(String[] argv) {
    String str = "&<tah1986.com";
    System.out.println(unencodeXML(str));
  }

  
  public static String unencodeXML(String str) {
    if (str == null)
      return null;

    StringBuilder b = new StringBuilder();

    int c = 0;
    while (c < str.length()) {
      if (str.charAt(c) == '&') {
        String entity = _entity(str, c);
        if (entity == null)
          b.append('&');
        else {
          if (entity.equals("lt"))
            b.append('<');
          else if (entity.equals("gt"))
            b.append('>');
          else if (entity.equals("amp"))
            b.append('&');
          else if (entity.equals("apos"))
            b.append("'");
          else if (entity.equals("quot"))
            b.append('"');
          else {
            b.append("&");
            b.append(entity);
            b.append(";");
          }

          c += entity.length() + 1;
        }
      } else
        b.append(str.charAt(c));

      c++;
    }

    return b.toString();
  }

  private static String _entity(String src, int ch) {
    int c = ch + 1;

    while (c < src.length()) {
      if (src.charAt(c) == '&')
        return null;
      if (src.charAt(c) == ';')
        return src.substring(ch + 1, c);
      c++;
    }

    return null;
  }

}

 
继续阅读