2012-10-09 41 views
1

我遇到的最大问题是用户直接将字从WORD复制到字段中,导致我生成的xml无效。我发现了很多不同的方法来解决这个问题,但是从我的xml中删除这些无效字符的最常见的方式是否来自WORD或不是来自?Groovy - 删除无效的xml字符

回答

2

我用一个静态方法编写了一个Java类(7年前,查看时间戳),试图清理从Word发布的文本。

它在这里如果你有兴趣:

/** 
* <p>Title: Word Cleaner</p> 
* <p>Description: Strips out all of the rubbish that Word tends to generate (open, close quotes, etc)</p> 
* 
* Based on John Walker's "Demoroniser" Perl script : http://www.fourmilab.ch/webtools/demoroniser/ 
*/ 
public class WordCleaner 
{ 
    private WordCleaner() {} 

    public static String runWordCleaner(String input) 
    { 
    StringBuffer sb = new StringBuffer() ; 

    int len = input == null ? 0 : input.length() ; 
    for(int i = 0 ; i < len ; i++) 
    { 
     int c ; 
     switch(c = (int)input.charAt(i)) 
     { 
     case 0x82 : sb.append(",") ; break ; 
     case 0x83 : sb.append("f") ; break ; 
     case 0x84 : sb.append(",,") ; break ; 
     case 0x85 : sb.append("...") ; break ; 
     case 0x88 : sb.append("^") ; break ; 
     case 0x89 : sb.append("ppt") ; break ; 
     case 0x8B : sb.append("<") ; break ; 
     case 0x8C : sb.append("Oe") ; break ; 
     case 0x91 : sb.append("'") ; break ; 
     case 0x92 : sb.append("'") ; break ; 
     case 0x93 : sb.append("\"") ; break ; 
     case 0x94 : sb.append("\"") ; break ; 
     case 0x95 : sb.append("*") ; break ; 
     case 0x96 : sb.append("-") ; break ; 
     case 0x97 : sb.append("--") ; break ; 
     case 0x98 : sb.append("~") ; break ; 
     case 0x99 : sb.append("TM") ; break ; 
     case 0x9B : sb.append(">") ; break ; 
     case 0x9C : sb.append("oe") ; break ; 
     case 0xA9 : sb.append("(c)") ; break ; 
     case 0xAE : sb.append("(r)") ; break ; 
     case 0xBC : sb.append("1/4") ; break ; 
     case 0xBD : sb.append("1/2") ; break ; 
     case 0xBE : sb.append("3/4") ; break ; 
     case 8208 : sb.append("-") ; break ; 
     case 8209 : sb.append("-") ; break ; 
     case 8211 : sb.append("--") ; break ; 
     case 8212 : sb.append("--") ; break ; 
     case 8213 : sb.append("--") ; break ; 
     case 8214 : sb.append("||") ; break ; 
     case 8215 : sb.append("_") ; break ; 
     case 8216 : sb.append("'") ; break ; 
     case 8217 : sb.append("'") ; break ; 
     case 8218 : sb.append(",") ; break ; 
     case 8219 : sb.append("'") ; break ; 
     case 8220 : sb.append("\"") ; break ; 
     case 8221 : sb.append("\"") ; break ; 
     case 8222 : sb.append(",,") ; break ; 
     case 8223 : sb.append("\"") ; break ; 
     case 8226 : sb.append("*") ; break ; 
     case 8227 : sb.append(">") ; break ; 
     case 8228 : sb.append("*") ; break ; 
     case 8229 : sb.append("..") ; break ; 
     case 8230 : sb.append("...") ; break ; 
     case 8231 : sb.append("-") ; break ; 
     case 61514 : sb.append(":-)") ; break ; 
     case 61515 : sb.append(":-|") ; break ; 
     case 61516 : sb.append(":-(") ; break ; 
     default : sb.append((char)c) ; 
     } 
    } 
    return sb.toString() ; 
    } 
} 
+0

我为这几个变化,使其多了几分时髦,但所有这一切是完美的。谢谢! – Howes

+0

你的启发让我[groovify我的版本](https://gist.github.com/3873209);-) –