java中无效字符串,在java中从字符串中删除无效的XML字符
到目前为止,所有这些答案只会取代字符本身。但有时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字符相关推荐
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- java中将json字符串_Java中JSON字符串与java对象的互换实例详解
在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...
- java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...
fastJSON字符串类型数据中的日期转换为Java bean的日期对象 Person.java import java.io.Serializable; import java.util.Date; ...
- java中需要用equals来判断两个字符串值是否相等
在C++中,两个字符串比较的代码可以为: (string1==string2) 但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false Java中必须使用string1.eq ...
- java字符串 大括号_string.format格式化字符串中转义大括号“{}”
今天,用Java读取配置文件占位符,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表 ...
- java输出文件中匹配的字段_Java如何从文件中打印与给定模式匹配的所有字符串?...
在Java编程中,如何从文件中打印与给定模式匹配的所有字符串? 以下示例显示了如何使用Util.regex类的Patternname.matcher()方法从文件中打印与给定模式匹配的所有字符串. p ...
- Java中JSON字符串与java对象的互换实例详解
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...
- java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
- Java黑皮书课后题第5章:*5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目
5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目 题目 题目概述 运行示例 破题 代码 题目 题目概述 5.50(对大写字母计数)编写一个程序,提示用户 ...
- java中如何确定是数字_java中怎么判断指定的数据是字符串是否是数字?
展开全部 java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = 0; i ...
最新文章
- CentOS 6.3 安装 samba 共享
- android jack log,Android:JACK编译错误汇总及解决
- java中判断两个方法是否相同
- HTML源码-网页123算数题小游戏源码
- 微软开始取消 Windows 10 对 32 位系统的支持
- crt安装mysql教程_Centos系统安装MySQL详细图文教程
- Stata进行logistic回归绘制列线图并做内部验证
- LM小型可编程控制器软件(基于CoDeSys)笔记二十七:温度电阻通道和DO通道
- Ansible Jinjia2 模板
- 目标客户画像_分析目标人群画像的5个步骤
- sql日期格式转换函数_SQL转换日期函数和格式
- adbdriver的安装
- Python项目实战 4.1:账号登录
- DLink624+A拨号失败的问题
- [2019HDU多校第一场][HDU 6578][A. Blank]
- JavaWeb购物车项目二
- 微信公众号对接chatgpt开发教程
- html 设置地图中心点,SOSO地图JS画出标注和中心点以html形式运行
- mplayer 视频播放器_如何全屏播放视频并使它与MPlayer循环播放?
- 拉卡拉智能POS新功能预览