2011-01-13 14 views
1

Wenn ich versuche, die XML von Java unter Verwendung von SAX-Parser zu lesen, ist es nicht in der Lage, den Inhalt im Elemente vorhanden, nachdem SonderzeichenUnable Sonderzeichen aus XML lesen java

Für ex zu lesen:

<title>It's too difficult</title> 

nach dem Lesen des SAX-Parser verwendet, zeigt es nur es

Wie Sonderzeichen zu behandeln. Mein Beispielcode ist als unten

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(); 
    } 
    } 

} 
+1

http://stackoverflow.com/questions/4567636/java-sax-parser-split-calls-to-characters/4567654#4567654 –

Antwort

4

Die characters(char ch[], int start, int length) Methode liest nicht ausgezogene Linien, können Sie die Zeichen in der endElemen Methode in einem StringBuffer und es verwendet, gespeichert werden sollen.

ZB:

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)); 
} 
+0

Dank morja ... Es funktionierte prima ..Danke vielmals. – JavaGeek

+0

Großartig! Herzlich willkommen! – morja