在接口挪用得出一个xml型字符串,一向报错
The entityname must immediately follow the '&' in the entity reference
经查发明 xml的内容里存在有 &标记 而 经由过程dom4j读取时 会发作毛病
在xml中 “&”“<”“>”如许的标签存放在内容里是不合法的,会常常出题目。
下面找到解决方法:实测 替代 & 是可行的。
public void chartReplace(){ String str2 = "<logentry revision='1'>" + "<msg>In this comment, I fixed a <bug>, and <added> file1&&file2.</msg>" + "</logentry>"; System.out.println("original string: "+str2); //替代“&”:$1示意与(<msg>.*)的婚配子序列;$4示意与(.*</msg>)婚配的。 //&(?!amp;)示意婚配&而且背面不是amp;的字符串 //"$1&$3$4"获得的效果就是替代了<msg></msg>中的“&”为“&” //因为每次只能替代掉一个“&”,所以轮回实行替代,直到替代后与替代前的字符串相称。 String str1 = ""; while(!str2.equals(str1)){ str1 = str2; str2 = str1.replaceAll("(<msg>.*)(&(?!amp;))(.*</msg>)", "$1&$3"); } System.out.println("firstly replace \"&\": "+str2); //替代“<” str1 = ""; while(!str2.equals(str1)){ str1 = str2; str2 = str1.replaceAll("(<msg>.*)(<)(.*</msg>)", "$1<$3"); } System.out.println("then replace \"<\": "+str2); //替代“<” str1 = ""; while(!str2.equals(str1)){ str1 = str2; str2 = str1.replaceAll("(<msg>.*)(>)(.*</msg>)", "$1>$3"); } System.out.println("finally replace \">\": "+str2); }
以上就是详解xml型字符串剖析时存在& < >标记时的解决方案的细致内容,更多请关注ki4网别的相干文章!