我用SAX解析XML,发现无法取得中文,于是我在后台打印了一下取得的XML,发现取得的XML变成了
<?xml version="1.0" encoding="UTF-8"?>
<eml servername="real84" xmlns="http://api.atditu.com/api3">  
<s>    <code>0000001</code>    
<mt>2011-05-05</mt>    
<aps>      
<code1>&#35831;&#20808;&#30331;&#38470;&#65281;</code1>    
</aps>  
</s>
</eml>在code1字段里就是我要拿的中文,但现在变成了这样?我应该怎么处理?怎么样编码才能把XML里的中文拿出来,我的工程里
编码已经设成UTF-8了,有高手帮忙看看嘛????

解决方案 »

  1.   

    可否把SAX的解析代码发出来一看?
      

  2.   

    public class InterfaceHandle extends DefaultHandler { private String code;
    private String code1;
    private String data;

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {

    data = new String(ch,start,length);
    } @Override
    public void endElement(String url, String arg1, String qName)
    throws SAXException {

    if(qName.equals("code")){
    setCode(data);
    }
    if(qName.equals("code1")){

    setCode1(data);
    }
    }
    这是解析代码,就重写了这两个方法,那几个汉字是"请先登陆!"
      

  3.   

    我到这步其实还没解析了,就打印了一下取得的XML,发现里面的汉字全变成这样了....
      

  4.   

    这是取得流的代码
    InterfaceHandle handle = new  InterfaceHandle();
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser parser = factory.newSAXParser();


    InputSource inputSource = new InputSource(conn.getInputStream());
    inputSource.setEncoding("utf-8");
    parser.parse(inputSource, handle);
      

  5.   


    package wlzx.mh.sax;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;
    import org.xml.sax.ContentHandler;
    import org.xml.sax.Locator;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;public class ReadAllElement {
    public static void main(String[] args) throws ParserConfigurationException,
    SAXException, IOException {
    // 得到sax工厂实例
    SAXParserFactory factory = SAXParserFactory.newInstance();
    // 得到SaxParse实例
    SAXParser sp = factory.newSAXParser();
    // 得到xml读取器
    XMLReader reader = (XMLReader) sp.getXMLReader();
    // 设置处理器
    reader.setContentHandler(new ListHandle());
    // 读取xml文档
    reader.parse("WebRoot/dtd/book.xml");
    }
    }class ListHandle implements ContentHandler {
    @Override
    public void startElement(String uri, String localName, String name,
    Attributes atts) throws SAXException {
    System.out.print("<" + name);
    for (int i = 0; atts != null && i < atts.getLength(); i++) {
    System.out.print(" " + atts.getQName(i) + "=\"" + atts.getValue(i)
    + "\" ");
    }
    System.out.print(">");
    } @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    System.out.print(new String(ch, start, length));
    } @Override
    public void endElement(String uri, String localName, String name)
    throws SAXException {
    System.out.print("</" + name + ">");
    } @Override
    public void endDocument() throws SAXException { } @Override
    public void endPrefixMapping(String prefix) throws SAXException { } @Override
    public void ignorableWhitespace(char[] ch, int start, int length)
    throws SAXException { } @Override
    public void processingInstruction(String target, String data)
    throws SAXException { } @Override
    public void setDocumentLocator(Locator locator) {
    } @Override
    public void skippedEntity(String name) throws SAXException { } @Override
    public void startDocument() throws SAXException { } @Override
    public void startPrefixMapping(String prefix, String uri)
    throws SAXException { }}