我正在解析XML文档中的一些数据,然后将其写回另一个XML文档。我遇到一个问题,原始数据是用CDATA部分写的。
这是输入的一个例子:
<actions><![CDATA[<div>
check that's is sent </div>
我只是用substring
函数替换了div,p等,但我的输出是
<logical>check that &#39; is sent </logical>
我希望输出的内容看起来与输入相同:
<logical>check that's is sent </logical>
我也尝试使用子字符串,如下所示:
string= string.replaceAll("&#\\d+;", " 39");
但现在问题是这个数字是可变的,所以我需要用&#numl;
此外,字符串可能包含许多数字,因此我无法在其中搜索数字,如下所示:
check that's is sent and*s is received
答案 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();}