旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

详解xml型字符串剖析时存在& < >标记时的解决方案【XML教程】,xml,字符串

作者:搜教程发布时间:2019-11-30分类:XML教程浏览:81评论:0


导读:题目发作:在接口挪用得出一个xml型字符串,一向报错Theentitynamemustimmediatelyfollowthe'&'inthe...
题目发作:

在接口挪用得出一个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&amp;$3$4"获得的效果就是替代了<msg></msg>中的“&”为“&amp;”
        //因为每次只能替代掉一个“&”,所以轮回实行替代,直到替代后与替代前的字符串相称。
        String str1 = "";
        while(!str2.equals(str1)){
            str1 = str2;
            str2 = str1.replaceAll("(<msg>.*)(&(?!amp;))(.*</msg>)", "$1&amp;$3");
        }
        System.out.println("firstly replace \"&\": "+str2);
         
        //替代“<”
        str1 = "";
        while(!str2.equals(str1)){
            str1 = str2;
            str2 = str1.replaceAll("(<msg>.*)(<)(.*</msg>)", "$1&lt;$3");
        }
        System.out.println("then replace \"<\": "+str2);
         
        //替代“<”
        str1 = "";
        while(!str2.equals(str1)){
            str1 = str2;
            str2 = str1.replaceAll("(<msg>.*)(>)(.*</msg>)", "$1&gt;$3");
        }
        System.out.println("finally replace \">\": "+str2);
    }

以上就是详解xml型字符串剖析时存在& < >标记时的解决方案的细致内容,更多请关注ki4网别的相干文章!

标签:xml字符串


欢迎 发表评论: