Java me JAXP Sax解析器Java ME Midlet解析汉字时出现异常

Java me JAXP Sax解析器Java ME Midlet解析汉字时出现异常,java-me,sax,saxparser,jaxp,saxparseexception,Java Me,Sax,Saxparser,Jaxp,Saxparseexception,我在解析一些编码为HTML Unicode的汉字时遇到了很大的困难, 嵌入在XML文件中 我在javax.xml.parsers.SAXParser中使用javame 一个这样的字符文件是词: <test>&#35789;</test> 它的死亡伴随着: org.xml.sax.SAXParseException: at org.xml.sax.helpers.DefaultHandler.fatalError(+1) at com.sun.ukit.jaxp

我在解析一些编码为HTML Unicode的汉字时遇到了很大的困难, 嵌入在XML文件中

我在javax.xml.parsers.SAXParser中使用javame

一个这样的字符文件是词:

<test>&#35789;</test>
它的死亡伴随着:

org.xml.sax.SAXParseException: 
at org.xml.sax.helpers.DefaultHandler.fatalError(+1)
at com.sun.ukit.jaxp.Parser.panic(+18)
at com.sun.ukit.jaxp.Parser.ent(+586)
at com.sun.ukit.jaxp.Parser.elm(+434)
at com.sun.ukit.jaxp.Parser.parse(+199)
at com.sun.ukit.jaxp.Parser.parse(+47)
at com.sun.ukit.jaxp.Parser.parse(+31)
at jaxp.startApp(+83)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.nokia.mid.impl.isa.ui.MIDletManager.callStartApp(+4)
at com.nokia.mid.impl.isa.ui.MIDletManager.activateMIDlet(+10)
at com.nokia.mid.impl.isa.ui.MIDletManager.run(+15)

如果你有任何想法,我将不胜感激。

我回答这个问题显然迟到了。然而,为了记录在案

我几年前写过这个解析器。在JSR172的解析器的方法ent版本中,使用Short.parseShort将实体值转换为字符。如果该值高于32767 Short.parseShort,则抛出NumberFormatException。此异常在方法ent中被捕获,并导致方法panic的调用


JSR280中使用了更新版本的解析器。此版本应该能够正确处理32767以上的值。

我不是ME程序员,但在常规Java上,SAXParseException提供了一些有关原因的信息,这在这里可能很有用。
import java.io.InputStream;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.helpers.DefaultHandler;


public class jaxp extends MIDlet {

public jaxp() {
}

protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
}

protected void pauseApp() {
}

protected void startApp() throws MIDletStateChangeException {
    try {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
        DefaultHandler handler = new DefaultHandler() {};
        String fileName = "test.xml";
        InputStream is = jaxp.class.getResourceAsStream("/" + fileName);
        saxParser.parse(is, handler);
    } catch (Exception e) {
        e.printStackTrace();
    }

}
}
org.xml.sax.SAXParseException: 
at org.xml.sax.helpers.DefaultHandler.fatalError(+1)
at com.sun.ukit.jaxp.Parser.panic(+18)
at com.sun.ukit.jaxp.Parser.ent(+586)
at com.sun.ukit.jaxp.Parser.elm(+434)
at com.sun.ukit.jaxp.Parser.parse(+199)
at com.sun.ukit.jaxp.Parser.parse(+47)
at com.sun.ukit.jaxp.Parser.parse(+31)
at jaxp.startApp(+83)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.nokia.mid.impl.isa.ui.MIDletManager.callStartApp(+4)
at com.nokia.mid.impl.isa.ui.MIDletManager.activateMIDlet(+10)
at com.nokia.mid.impl.isa.ui.MIDletManager.run(+15)