2017-11-29 24 views
-2

私は、Mavenプロジェクトのthisチュートリアルに従ってSAXでXMLファイルを解析しようとしています。ここに私のSAXLocalNameCountです:xmlReaderをParserにキャストできません

public class SAXLocalNameCount extends DefaultHandler { 
     private static String filename = ".\\file.xml"; 

    public static void main(String[] args) throws ParserConfigurationException, org.xml.sax.SAXException, IOException, SAXException { 

    SAXParserFactory spfactory = SAXParserFactory.newInstance(); 
     spfactory.setNamespaceAware(true); 
     SAXParser saxParser = spfactory.newSAXParser(); 
     XMLReader xmlReader = saxParser.getXMLReader(); 
     xmlReader.setContentHandler(new SAXLocalNameCount()); 
     xmlReader.parse(convertToFileURL()); 

    } 

    private static void usage() { 
     System.err.println("Usage: SAXLocalNameCount <file.xml>"); 
     System.err.println(" -usage or -help = this message"); 
     System.exit(1); 
    } 
    private Hashtable tags; 

    public void startDocument() throws SAXException { 
     tags = new Hashtable(); 
    } 

    public void startElement(String namespaceURI, 
          String localName, 
          String qName, 
          Attributes atts) 
      throws SAXException { 

     String key = localName; 
     Object value = tags.get(key); 

     if (value == null) { 
      tags.put(key, new Integer(1)); 
     } 
     else { 
      int count = ((Integer)value).intValue(); 
      count++; 
      tags.put(key, new Integer(count)); 
     } 
    } 

    public void endDocument() throws SAXException { 
     Enumeration e = tags.keys(); 
     while (e.hasMoreElements()) { 
      String tag = (String) e.nextElement(); 
      int count = (Integer) tags.get(tag); 
      System.out.println("Local Name \"" + tag + "\" occurs " 
        + count + " times"); 
     } 
    } 
    private static String convertToFileURL() { 
     String path = new File(filename).getAbsolutePath(); 
     if (File.separatorChar != '/') { 
      path = path.replace(File.separatorChar, '/'); 
     } 

     if (!path.startsWith("/")) { 
      path = "/" + path; 
     } 
     return "file:" + path; 
    } 

} 

この行は:

XMLReader xmlReader = saxParser.getXMLReader(); 

は私にエラーを与える:

のClassCastException:org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParserはjdk.internalにキャストすることはできません。 org.xml.sax.XMLReader

私はここで何が欠けていますか?

+0

になるはずだったということでしたあなたが言及したチュートリアルには、あなたが言及しているコード行は表示されません。なぜあなたはこれが今まで働くべきだと思いますか?あなたが進むにつれてそれを作ることはできません。 – EJP

+0

@EJPダウンワードを持っているのも不思議ではありません。ありがとう、私はそれを正しく編集しました。 – annabretsko

答えて

1

私の問題は、私はjdk.internal.org.xml.sax.helpers.DefaultHandlerからインポートして、右のインポートがorg.xml.sax.helpers.DefaultHandler

関連する問題