我正在尝试从字符串中获取xml。 特定符号位于标签标题中。 我做到了:
public class Demo {
public static void main(String[] args) throws Exception {
String data = "<title> \"sad\" <<dd> ><\n </title>";
String pattern = "(<title>)(.+?)([<>'\"&])(.+?)(\n </title>)";
Matcher m = Pattern.compile(pattern).matcher(data);
while (m.find()) {
String bugString = m.group(3) + m.group(4);
String fixed = bugString.replaceAll("<", "<");
fixed = fixed.replaceAll(">", ">");
fixed = fixed.replaceAll(">", ">");
fixed = fixed.replaceAll("'", "'");
fixed = fixed.replaceAll("\"", """);
fixed = fixed.replaceAll("&", "&");
data = data.replace(bugString, fixed);
}
System.out.println(data);
}
}
但它看起来有点难看。如果我不想使用额外的库,我该如何改进呢?
答案 0 :(得分:1)
如果你可以影响String,你可以将titles标签文本放在CDATA部分中。在此范围内,您不必编码特殊的XML字符。
解释CDATA部分,例如这里http://en.m.wikipedia.org/wiki/CDATA
所以你的头衔可能就像
<title> <![CDATA[ here comes my special title with "/<> ]]> </title>