本文主要是介绍关于xml中存在特殊的转义字符,不能正常反序列化问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于xml中存在特殊的转义字符,不能正常反序列化问题
1. 为什么要进行转义
在xml文档中,有些字符是有特殊含义的,如:<,>,&,',""
需要进行特殊处理:
<
和>
用来标记xml标签的开始和借宿&
用于定义实体引用‘
和"
可能会出现在属性的值中;
如果这些字符直接出现在xml文档中,而没有被转义,那么xml解析器可能就会误解他们的意思,比如,解析器可能错误的认为 <
标志着·一个新的xml元素的开始。
2. 如何进行转义
将下面字符进行xml转义:
<
转义成<
>
转义成>
&
转义成&
'
转义成'
"
转义成"
2.1 使用javax.xml.transform
包来处理:
使用Apache Commons Lang 中的StringEscapeUtils。escapeXm110(String)
方法来转义XML字符串。
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 自己写一个工具包
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("&","&").replace("<","<").replace(">",">").replace("\"",""").replace("'","&apos");
}}
这篇关于关于xml中存在特殊的转义字符,不能正常反序列化问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!