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

}
相关推荐
Luna-player2 天前
某个工程 pom.xml
xml
l1t2 天前
对expat库XML_Parse函数调用优化的测试
xml·c语言·解析器·expat
l1t2 天前
利用美团龙猫添加xlsx的sheet.xml读取sharedStrings.xml中共享字符串输出到csv功能
xml·c语言·数据结构·人工智能·算法·解析器
叶 落2 天前
[Maven 基础课程]pom.xml
xml·pom.xml 常见配置项·maven 的 pom.xml
北城以北88882 天前
Java高级编程--XML
xml·java·开发语言·intellij-idea
l1t2 天前
DeepSeek辅助编写的利用quick_xml把xml转为csv的rust程序
xml·开发语言·人工智能·rust·解析器·quick-xml
l1t2 天前
how to build tbox xml into the demo
xml·linux·c语言·parser·tbox
搞全栈小苏3 天前
基于Qt QML和C++的MQTT测试客户端(CMakeLists实现)
xml·c++·qt
fatiaozhang95273 天前
中国移动云电脑一体机-创维LB2004_瑞芯微RK3566_2G+32G_开启ADB ROOT安卓固件-方法3
android·xml·adb·电脑·电视盒子·刷机固件
l1t5 天前
轻量级XML读写库Mini-XML的编译和使用
xml·c语言·解析器