关于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");
}

}
相关推荐
arbalest108014 小时前
xml文件学习
xml
开开心心_Every1 天前
定时管理进程:防止沉迷电脑的软件推荐
xml·java·运维·服务器·网络·数据库·excel
水哥ansys1 天前
ANSYS Workbench ACT二次开发XML语法介绍
xml·二次开发·水哥ansys
程序猿零零漆2 天前
Spring之旅 - 记录学习 Spring 框架的过程和经验(二)基于Xml方式Bean的配置
xml·spring
开开心心_Every3 天前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
武子康3 天前
Java-210 Spring AMQP 整合 RabbitMQ:JavaConfig 注解配置、RabbitTemplate 发送/同步接收与坑位速查
xml·java·spring·消息队列·rabbitmq·java-rabbitmq·mq
jiayong233 天前
`.flattened-pom.xml` 深度解析
xml
小李飞飞砖3 天前
RemoteViews的layout无法设置xml类型的Drawable,会报错
xml
武子康3 天前
Java-209 Spring AMQP 整合 RabbitMQ 实战:XML 配置直连交换机、RabbitAdmin 自动声明与收发闭环
xml·java·spring·rabbitmq·java-rabbitmq·java-activemq
利刃大大6 天前
【Mybatis】Mybatis入门 && 基础操作 && XML配置文件开发 && 多表查询 && 注入问题 && 数据库连接池
xml·数据库·mybatis