Posted on 2005-08-22 21:02
ravenix 阅读(1353)
评论(1) 编辑 收藏 所属分类:
XML-XSL-FO
尽管有一些不足,wutka dtdparser 仍然是使用最广泛的java dtd dom解析器。
其它可用的java dtd parser有 Ronald Bourret DTD Parser 和 Matra 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)