关于xml中存在特殊的转义字符,不能正常反序列化问题

关于xml中存在特殊的转义字符,不能正常反序列化问题

1. 为什么要进行转义

在xml文档中,有些字符是有特殊含义的,如:<,>,&,',""需要进行特殊处理:

  • <> 用来标记xml标签的开始和借宿
  • & 用于定义实体引用
  • '" 可能会出现在属性的值中;

如果这些字符直接出现在xml文档中,而没有被转义,那么xml解析器可能就会误解他们的意思,比如,解析器可能错误的认为 < 标志着·一个新的xml元素的开始。

2. 如何进行转义

将下面字符进行xml转义:

  • < 转义成 &lt;
  • > 转义成 &gt;
  • & 转义成 &amp;
  • ' 转义成 '
  • " 转义成 &quot;
2.1 使用javax.xml.transform包来处理:

使用Apache Commons Lang 中的StringEscapeUtils。escapeXm110(String)方法来转义XML字符串。

java 复制代码
import org,apache.commons.lang3.StringEscapeUtils;
public Class XmlEscaper{
public static void main(String[] args){
   String xml="<note>\n" + "<to>Tove</to>\n"
   +"<from><ani/from>"+
   "<deading>Reminder</deading>\n"+
   "<body>Dont't forget my weekend!</body>\n"
   +"</note>";
//使用Apace Commons Langs 进行转义
String escapeXml= StringEscapeUtils.escapeXml10(xml);
System.out.printLN(escapeXml);
}
}
1.2 自己写一个工具包
java 复制代码
import org,apache.commons.lang3.StringEscapeUtils;
public Class XmlEscaper{
public static void main(String[] args){
   String xml="<note>\n" + "<to>Tove</to>\n"
   +"<from><ani/from>"+
   "<deading>Reminder</deading>\n"+
   "<body>Dont't forget my weekend!</body>\n"
   +"</note>";
String escapeXml= escapeXml10(xml);
System.out.printLN(escapeXml);
}
private static String escapeXml(String input){
 return input.replace("&","&amp;")
             .replace("<","&lt;")
             .replace(">","&gt;")
             .replace("\"","&quot;")
             .replace("'","&apos");
}

}
相关推荐
Meteors.1 天前
安卓源码阅读——01.grade设置binding为true时,xml如何进行映射
android·xml
程序员buddha1 天前
传统 Spring 框架,XML 配置 Bean 的方式
xml·java·spring
前网易架构师-高司机2 天前
带标注的交警识别数据集,可识别交警和非交警,5587张图,支持yolo,coco json,voc xml,文末有模型训练代码
xml·yolo·json·数据集·交警
波诺波3 天前
最小 SOFA XML 场景结构 0-base.scn
xml·java·前端
夕除5 天前
spring boot 14
xml·spring boot·redis
一拳一个娘娘腔5 天前
【SRC漏洞挖掘系列】第09期:XXE与反序列化 —— 当XML和Java开始“吃”代码
xml·java·安全·web安全·github
Cx330❀5 天前
【Linux网络】从以太网碰撞到 Socket 套接字与网络字节序的深度解析
xml·linux·运维·服务器·开发语言·网络·c++
缘于自然87 天前
高通modem如何确认device_config.xml的使用路径
xml·modem·mbn·mcfg
丑八怪大丑12 天前
XML_Tomcat_HTTP
xml·http·tomcat
largecode13 天前
企业名称能在来电显示吗?号码显示公司名服务打通多终端展示
android·xml·ios·iphone·xcode·webview·phonegap