XML实体中不允许出现"&","<",">"等特殊字符,否则XML语法检查时将出错,如果编写的XML文件必须包含这些字符,则必须分别写成"&","<",">"再写入文件中。例如,如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:
- <age> age < 30 </age>
为了避免出现这种情况,必须将字符"<" 转换成实体,像下面这样:
- <age> age < 30 </age>
在读取的时候,解析器会自动将其转换回"&","<",">"等特殊字符,正常来说,只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。
需要注意的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以";"结束;
c. 单独的&不被认为是转义开始;
d. 区分大小写。
以下是XML中需要的转义字符:[/size]
&(逻辑与) &
<(小于) <
>(大于) >
"(双引号) "
'(单引号) ' [/size]
案例:
第一步:导入包:commons-lang.jar包。
第二步:编写转义工具类:
public class XmlUtils {
public static String escape(String str) {
if (str == null) {
return "";
}
str = StringUtils.replace(str, "&", "&") ;
str = StringUtils.replace(str, "<", "<");
str = StringUtils.replace(str, ">", ">");
str = StringUtils.replace(str, "‘", "'");
str = StringUtils.replace(str, "\"", """);
return str;
}
}
第三步:编写测试类
public class Dome_01 {
//请求字符串
@Test
public void requestString(){
String aa = "a<222222";
//拼接字符串
String reqString = "<?xml version=\"1.0\" encoding=\"UTF-8\">" +
"<request>" +
"<body>" +
"<vehicle>" +
"<licenseNo>" +
XmlUtils.escape(aa) +
"</licenseNo>" +
"</vehicle>" +
"</body>" +
"</request>";
if(!StrHandler.isNull(reqString)){
System.out.println("字符串不为空");
}else{
System.out.println("字符串为空");
}
}
}
第四步:总结:
图书字符转义是因为有些字符你不转义的话就会误认为是实体的开始。