XML字符实体引用

时间:2017-09-24 10:16:55

标签: java xml

我正在解析XML文档中的一些数据,然后将其写回另一个XML文档。我遇到一个问题,原始数据是用CDATA部分写的。

这是输入的一个例子:

<actions><![CDATA[<div>
check that&#39;s is sent </div>

我只是用substring函数替换了div,p等,但我的输出是

<logical>check that &amp;#39; is sent </logical>

我希望输出的内容看起来与输入相同:

<logical>check that's is sent </logical>

我也尝试使用子字符串,如下所示:

string= string.replaceAll("&#\\d+;", " 39");

但现在问题是这个数字是可变的,所以我需要用&#numl;

中的数字替换当前的正则表达式

此外,字符串可能包含许多数字,因此我无法在其中搜索数字,如下所示:

check that&#39;s is sent and&#42;s is received

1 个答案:

答案 0 :(得分:0)

我使用此函数查找所有出现的数字字符引用,并仅使用数字

返回它
public static String decode(String str) {
    StringBuffer sb = new StringBuffer();
    int i1=0;
    int i2=0;

    while(i2<str.length()) {
       i1 = str.indexOf("&#",i2);
       if (i1 == -1 ) {
            sb.append(str.substring(i2));
            break ;
       }
       sb.append(str.substring(i2, i1));
       i2 = str.indexOf(";", i1);
       if (i2 == -1 ) {
            sb.append(str.substring(i1));
            break ;
       }

       String appnd = str.substring(i1+2, i2);




             sb.append(" "+appnd);

        i2++ ;
    }
    return sb.toString();}
相关问题