到目前为止,所有这些答案只会取代字符本身。但有时XML文档会有无效的XML实体序列,从而导致错误。例如,如果

Illegal character entity: expansion character (code 0x2 at ...

.

这里有一个简单的java程序,可以替换那些无效的实体序列。

public final Pattern XML_ENTITY_PATTERN = Pattern.compile("\\&\\#(?:x([0-9a-fA-F]+)|([0-9]+))\\;");

/**

* Remove problematic xml entities from the xml string so that you can parse it with java DOM / SAX libraries.

*/

String getCleanedXml(String xmlString) {

Matcher m = XML_ENTITY_PATTERN.matcher(xmlString);

Set replaceSet = new HashSet<>();

while (m.find()) {

String group = m.group(1);

int val;

if (group != null) {

val = Integer.parseInt(group, 16);

if (isInvalidXmlChar(val)) {

replaceSet.add("" + group + ";");

}

} else if ((group = m.group(2)) != null) {

val = Integer.parseInt(group);

if (isInvalidXmlChar(val)) {

replaceSet.add("" + group + ";");

}

}

}

String cleanedXmlString = xmlString;

for (String replacer : replaceSet) {

cleanedXmlString = cleanedXmlString.replaceAll(replacer, "");

}

return cleanedXmlString;

}

private boolean isInvalidXmlChar(int val) {

if (val == 0x9 || val == 0xA || val == 0xD ||

val >= 0x20 && val <= 0xD7FF ||

val >= 0x10000 && val <= 0x10FFFF) {

return false;

}

return true;

}

java中无效字符串,在java中从字符串中删除无效的XML字符相关推荐

  1. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  2. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  3. java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...

    fastJSON字符串类型数据中的日期转换为Java bean的日期对象 Person.java import java.io.Serializable; import java.util.Date; ...

  4. java中需要用equals来判断两个字符串值是否相等

    在C++中,两个字符串比较的代码可以为:  (string1==string2)  但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false  Java中必须使用string1.eq ...

  5. java字符串 大括号_string.format格式化字符串中转义大括号“{}”

    今天,用Java读取配置文件占位符,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表 ...

  6. java输出文件中匹配的字段_Java如何从文件中打印与给定模式匹配的所有字符串?...

    在Java编程中,如何从文件中打印与给定模式匹配的所有字符串? 以下示例显示了如何使用Util.regex类的Patternname.matcher()方法从文件中打印与给定模式匹配的所有字符串. p ...

  7. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  8. java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

  9. Java黑皮书课后题第5章:*5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目

    5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目 题目 题目概述 运行示例 破题 代码 题目 题目概述 5.50(对大写字母计数)编写一个程序,提示用户 ...

  10. java中如何确定是数字_java中怎么判断指定的数据是字符串是否是数字?

    展开全部 java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = 0; i ...

最新文章

  1. CentOS 6.3 安装 samba 共享
  2. android jack log,Android:JACK编译错误汇总及解决
  3. java中判断两个方法是否相同
  4. HTML源码-网页123算数题小游戏源码
  5. 微软开始取消 Windows 10 对 32 位系统的支持
  6. crt安装mysql教程_Centos系统安装MySQL详细图文教程
  7. Stata进行logistic回归绘制列线图并做内部验证
  8. LM小型可编程控制器软件(基于CoDeSys)笔记二十七:温度电阻通道和DO通道
  9. Ansible Jinjia2 模板
  10. 目标客户画像_分析目标人群画像的5个步骤
  11. sql日期格式转换函数_SQL转换日期函数和格式
  12. adbdriver的安装
  13. Python项目实战 4.1:账号登录
  14. DLink624+A拨号失败的问题
  15. [2019HDU多校第一场][HDU 6578][A. Blank]
  16. JavaWeb购物车项目二
  17. 微信公众号对接chatgpt开发教程
  18. html 设置地图中心点,SOSO地图JS画出标注和中心点以html形式运行
  19. mplayer 视频播放器_如何全屏播放视频并使它与MPlayer循环播放?
  20. 拉卡拉智能POS新功能预览

热门文章

  1. SQL语句 sum函数为空时返回0
  2. 第七部分: 分析监管、安全与隐私管理和信息生命周期监管
  3. iOS7 中的新特性
  4. 政客常用手段_我可以比政客更好地管理经济
  5. COMFORT 尊驾 | 内外兼修 全面进化
  6. STEP7编程免驱动方式(METH-MPI-S2)
  7. PyTorch导入报错:ValueError: module functions cannot set METH_CLASS or METH_STATIC
  8. 音频降噪算法 附完整C代码
  9. 话说当时武松踏住蒋 水浒传
  10. 黑客武库升级DDoS电磁炮:威力已不止瘫痪美国半张互联网