以前没做SAX这方面的不知道,现在仔细研究了下才发现,SAX解析是有缺陷的
当我使用SAX解析器解析XHTML文件的时候,发现解析器无法正确的解析出文件当中的特殊字符,比如
¡
¢
£
¤
¥
我debug了一下
发现在继承自DefaultHandler的类中的characters方法中没有这些字符进来,而且还有一个现象是,一个标签中的所有字符会由&所在的特殊字符分成两部分。
网上有人说SAX解析中会跳过这段带有&的字符,但是为什么
"    ----------------------------  "
&    ---------------------------- &
&lt;         ---------------------------- <
&gt;        ---------------------------- >
这几个会转化为对应的普通字符显示,那么究竟是在SAX解析其中全部替换了,还是有什么其他原因呢,我找了下关于SAX解析方面的类源码,但是还是没找到具体原因.
不知道各位大虾有什么思路或者解决方法么(在解析过程中不改变XHTML文件的前提下),希望大家不吝赐教,小弟不胜感激。 

解决方案 »

  1.   

    没注意过这个问题.
    不过你可以考虑换个XML Parser试试,也许只是你现在用的这个Parser的实现问题
      

  2.   

    好像Dom解析也存在这个问题,而且Dom解析也不太满足我的要求
      

  3.   

    我现在的想法是找到sax解析中作替换或者是跳过这些特殊字符的方法,然后自己来重构这些方法,但是死活没有找到,有没有高手指点下啊
      

  4.   

    解析的时候,总有一些特殊字符,程序中用来做控制的,比如> < , ",我碰到的是< >需要转换,你就用转换的&lt;和&gt;代替好了,如果非要深究,找找源码看看,没这个必要,...........
      

  5.   

    现在是必须支持所有的准确的说是大部分的特殊字符,大概有两百多个,但是sax里面大部分替换掉成了空串"";使得我的解析显示大有问题
      

  6.   

    &yen; 这些不是 XML 中的实体引用,而是 HTML 中预定义的 252 个实体引用之一。XML 中的实体引用只有 5 个,即:&lt;(<)、&gt;(>)、&quot;(")、&apos;(')、&amp;(&)
      

  7.   

    W3C XML 1.0
    Predefined Entities
    http://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent
      

  8.   

    好像Dom解析也存在这个问题,而且Dom解析也不太满足我的要求
      

  9.   

    这位老兄好像没看明白我的问题哦,现在用sax的话只能显示固定的几个,而其他的都被替换了,我是要将所有的特殊字符显示出来,看怎么解决
      

  10.   


    我明白的,你说的那些没有一个 XML 解析器能支持的,你只能自己手工处理。
      

  11.   

    我前面也说了 &yen; 之类的是 HTML 的实体引用,并不是 XML 的,既然 XML 规范没有规定所以 XML 解析器没有理由会去支持。
      

  12.   

    http://blog.csdn.net/yaoweijq/archive/2010/11/09/5997153.aspx
    不清楚这个能否解决
    有点事情
    没有细看你的问题