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

}
相关推荐
烤麻辣烫1 小时前
黑马程序员苍穹外卖后端概览
xml·java·数据库·spring·intellij-idea
暗碳1 小时前
安卓abx二进制xml文件转换普通xml文件
android·xml
jinxinyuuuus4 小时前
文件格式转换工具:XLSX的XML流式解析、数据类型推断与CSV编码规范
xml
czlczl2002092510 小时前
从抛出异常到返回 JSON/XML:SpringBoot 异常处理全链路解析
xml·spring boot·json
jiayong2311 小时前
MyBatis XML Mapper 特殊字符处理方案
xml·mybatis
e***19351 天前
【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
xml·spring·mybatis
编程修仙1 天前
第七篇 java的注解以及使用反射实现自定义注解功能
xml·java·开发语言·spring
暗碳1 天前
ai分析aweme-app.xml,default_config .xml文件
xml·人工智能
缺点内向1 天前
如何在 C# 中高效的将 XML 转换为 PDF
xml·后端·pdf·c#·.net
z***D6482 天前
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
xml·spring·logback