XML解析非法字符问题,有什么好办法可以解决?100分救命啊!!!

benbacon 2005-01-06 09:07:10
有这样一个应用,把一个一定格式的文本文件,当做纪录集通过XML文件对应,导入到数据库,现在这个文本文件里有一些非法字符(比如UE hex模式下码为1C的字符,在记事本中显示为小黑块,在UE非 hex模式下显示正常),会导致导入时XML解析出错..
问了一位朋友,他说一般ascii码<20的都是非法字符,除了回车换行的0A,0D,因此他建议我导入前选把文本文件过滤一下,把ascii码<20的字符都删掉,照他的意思好像是要把文件中00到19的字符都查找一遍,有没有什么方法,比如正则表达式,可以把这10多个查询写一起的,并都替换成空,有没有人处理过相关类似的问题啊??

救命啊
...全文
381 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ytnice 2005-03-30
  • 打赏
  • 举报
回复
up
OnlyFor_love 2005-03-30
  • 打赏
  • 举报
回复
学习ing!
顶一下!
benbacon 2005-03-29
  • 打赏
  • 举报
回复
我后来自己想了个笨办法,
String line:需要过滤的字符串
try{
byte[] bytes = line.getBytes("GBK");
for (int i = 0; i < bytes.length; i++) {
if (bytes[i] > 0 && bytes[i] < 32)
bytes[i] = 32;
}
line = new String(bytes, "GBK");
//System.out.println(line);
}catch(Exception e){
e.printStackTrace();
}
lanse89 2005-01-10
  • 打赏
  • 举报
回复
可用JDom中的函数做判断啊!
char ch;//ch即是你要判断的字符。
org.jdom.Verifier.isXMLCharacter(ch)
如果反回True就可以在xml中用的。很easy.
starsoulxp 2005-01-07
  • 打赏
  • 举报
回复
xml:base属性值的合法字符集和XML一样,都是[Unicode]。但是,有些Unicode字符不允许出现在URI引用(URI Reference)中。因此,处理器必须对这些字符进行编码和转义处理,以得到一个合法的URI引用。


不允许在URI引用中出现的字符包括:所有的非ASCII字符,以及在[IETF RFC 2396]2.4节列出的字符中去掉 “#”、“%”和方括号符号后剩下的符号。必须按照下面的方式对这些非法字符进行转义处理:

1. 将每个非法字符转换为UTF-8格式[IETF RFC 2279](UTF-8用一个或多个字节来表示原来的字符)。

2. 对于每个与非法字符相应的字节[译注//每个非法字符转换为UTF-8格式后,有一个或多个与它相应的字节],按照URI转义操作机制对它进行转义(也就是说,转换为%HH形式,这里HH是字节值的十六进制记法)。

3. 用最终的字符序列来替换原来的字符。

lhj 2005-01-07
  • 打赏
  • 举报
回复
import java.util.regex.*;

Pattern p = Pattern.compile("[\x00-\x09\x0b\x0c\x0e-\x19]");
Matcher m = p.matcher(YourxmlStringBuffer);
String nString = m.replaceAll("");
lhj 2005-01-07
  • 打赏
  • 举报
回复
还是要写代码替换?
lhj 2005-01-07
  • 打赏
  • 举报
回复
是用ultraEdit的替换吗?

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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