繁体   English   中英

无法使用SAX从URL解析XML文件?

[英]Cannot parse XML file from URL using SAX?

我从URL读取XML文件,然后将其传递给SAX文档。 但是,几乎好像没有进行解析,我不知道为什么吗?

XMLReader myReader = XMLReaderFactory.createXMLReader();
LetterHandler rh = new LetterHandler();
myReader.setContentHandler(rh);
URL url2 = new URL("http://www.w3schools.com/xml/note.xml");
InputStream stream = url2.openStream();
System.out.println(stream.available());
myReader.parse(new InputSource(stream));

class LetterHandler extends DefaultHandler {
        Boolean toSeen = false;
        String to;

        public void startElement(String localName, String rawName, Attributes attributes) throws SAXException {
            if (rawName.equals("to")) {
                System.out.println(rawName);
                toSeen = true;
            }
        }

        public void characters(char[] ch, int start, int length) {
            if (toSeen) {
                System.out.println("To: " + new String(ch, start, length));
                toSeen = false;
            }
        }
    }

据我所知,一旦调用.parse()方法,就应该打印出<to></to>标记的内容,但事实并非如此。 任何想法出什么事了吗?

您对startElement方法的覆盖具有错误的签名,因此它不覆盖任何内容,并且将调用默认值。

Java具有@Override批注,您可以在覆盖超类方法时使用该批注,从而允许编译器验证您是否具有(或至少 )正确的签名。

在此处输入图片说明

正确的签名是:

    public void startElement(
        String uri, 
        String rawName, 
        String qname, 
        Attributes attributes) throws SAXException {
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM