ravenix

鱼如何控制自己的呼吸
posts - 7, comments - 3, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

使用dtdparser解析中文dtd

Posted on 2005-08-22 21:02 ravenix 阅读(1345) 评论(1)  编辑  收藏 所属分类: XML-XSL-FO

尽管有一些不足,wutka dtdparser 仍然是使用最广泛的java dtd dom解析器。

其它可用的java dtd parser有 Ronald Bourret DTD ParserMatra DTD parser

要在DTD中使用中文,必须要在dtd文件的第一行写上

<?xml version="1.0" encoding="UTF-8"?>

并且将dtd文件以utf-8格式保存。别的编码格式也可以试试,但我不想冒险。

dtdparser不使用这个encoding指示来解析DTD,我们只能自己想办法,修改它的代码。

dtdparser有这些构造器(省略了带trace的)

DTDParser(java.io.File in)
DTDParser(java.io.Reader in)
DTDParser(java.net.URL in)

其中以Reader为参数的没有编码问题,因为reader本身已经指定了字符集。

以File为参数的构造器内部使用了new FileReader(in),这个方式使用系统默认字符集,不要用它,可以用FileInputStream和InputStreamReader来指定字符集,传递给以Reader为参数的构造器。

以URL为参数的构造器内部使用了new InputStreamReader(in.openStream()),没有指定字符集,我们可以给它增加一个带有String charsetName参数的构造器,内部调用new InputStreamReader(in.openStream(), charsetName)


评论

# re: 使用dtdparser解析中文dtd  回复  更多评论   

2008-02-29 16:46 by point
请问您如何能不能贴出来一个修改过的供大家下载,谢谢。

只有注册用户登录后才能发表评论。


网站导航: