运用java进行XML 解析的问题 求大神帮助!!

Stluny 2017-04-06 03:35:28
在做一个用java写的CS结构的程序碰到一个关于XML解析的问题 求大神帮助!!

具体问题如下:
客户处的数据中需要被解析的XML字符串中有“<” ">"等非法字符,所以解析出现异常并报错
现在的需求是 XML虽然非法(在两个XML节点中 出现非法字符) 但是也要正常解析 不报错
也就是说 需要将XML字符串里的非法的类似“<” ">"的字符全部替换掉,然后再解析

现在的代码如下

String xml = “这里是需要被解析的XML”;
if(xml == null || "".equals(xml)){
return null;
}
try {
StringReader sr = new StringReader(xml);
InputSource is = new InputSource(sr);

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(is);

return doc;
} catch (Exception e) {
e.printStackTrace();
}


因为有非法字符的原因 在Document doc = builder.parse(is); 这句代码就报错了

求大神帮看看 求解决!!!
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Stluny 2017-04-07
  • 打赏
  • 举报
回复
并没有人回复吗。。。。。
Stluny 2017-04-06
  • 打赏
  • 举报
回复
自己顶下 别沉啊
Stluny 2017-04-06
  • 打赏
  • 举报
回复
由于 这个XML中节点种类非常多 而且XML比较庞大 用下面这种方式 根据标签种类替换可能不太科学。。 因为种类实在太多 不容易统计。。 而且标签里还会套便签。。

		tripler = new XmlPrePrecessor("<A标签(.*?)>(.*?)</A标签>") {
			public String replacement() {
				String insertContent = group(2);
				String newRegex = createStrregex(insertContent);
				insertContent = insertContent.replaceAll("<(?!" + newRegex + ")", "<");
				insertContent = insertContent.replaceAll("(?<!<" + newRegex + ")>", ">");
				return "<A标签" + group(1) + ">" + insertContent + "</A标签>";
			}
		};
		xml = tripler.rewrite(xml);
求助希望能有别的方式。。。

50,543

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧