有没有办法让SAXParser在解析时忽略某些元素的内容?

时间:2011-02-24 07:37:25

标签: java xml sax

我有格式的XML:

...
<To>"Paul McCartney" <paul.mccartney@hotmail.com></To>
<From>"John Lennon" <john.lennon@yahoo.com></From>
...

SAXParser一到达电子邮件地址就会抛出异常。它认为<paul.mccartney@hotmail.com>是一个XML元素,只要遇到@符号就会引发异常。无论如何都要忽略Java SAX中某些元素的内容?

2 个答案:

答案 0 :(得分:5)

如果你使用的是DefaultHandler,你可以尝试覆盖org.xml.sax.helpers.DefaultHandler.error()和类似的方法吗?另请参阅org.xml.sax.ErrorHandler的JavaDoc:

http://download.oracle.com/javase/6/docs/api/org/xml/sax/ErrorHandler.html

但无论如何,XML都是无效的。不应该那样。您可以对其进行预处理并将<替换为&lt;,将>替换为&gt;,或者将整个<To/><From/>内容整合到<![CDATA[ ]]>中阻止......

答案 1 :(得分:1)

它不是XML,所以XML解析器不会解析它,如果你可以改变格式,否则你最好打赌你自己解析特定于这种格式的解析器。