无法使用java从xml中读取特殊字符

当我尝试使用SAX解析器从java读取xml时,它无法读取特殊字符后出现的元素中的内容

例如:

It's too difficult 

使用SAX解析器读取后,它只显示

如何处理特殊字符。 我的示例代码如下

  package com.test.java; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class ReadXMLUsingSAXParser { public static void main(String argv[]) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { int titleCount; boolean title = false; boolean description = false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // System.out.println("Start Element :" + qName); if (qName.equalsIgnoreCase("title")) { title = true; titleCount+=1; } if (qName.equalsIgnoreCase("description")) { description = true; } } public void endElement(String uri, String localName, String qName) throws SAXException { // System.out.println("End Element :" + qName); } public void characters(char ch[], int start, int length) throws SAXException { if (title&&titleCount>2) { System.out.println("title : " + new String(ch, start, length)+":"+titleCount); title = false; } if (description) { System.out.println("description : " + new String(ch, start, length)); description = false; } } }; saxParser.parse("C:\\Documents and Settings\\sukumar\\Desktop\\sample.xml", handler); } catch (Exception e) { e.printStackTrace(); } } } 

characters(char ch[], int start, int length)方法不读取整行,您应该将字符存储在StringBuffer并在endElemen方法中使用它。

例如:

 private StringBuffer buffer = new StringBuffer(); public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equalsIgnoreCase("title")) { System.out.println("title: " + buffer); }else if (qName.equalsIgnoreCase("description")) { System.out.println("description: " + buffer); } buffer = new StringBuffer(); } public void characters(char ch[], int start, int length) throws SAXException { buffer.append(new String(ch, start, length)); }