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

标签 java xml 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 注释,您可以在重写父类(super class)方法时使用该注释,从而允许编译器验证您是否具有(或至少a)正确的签名.

enter image description here

正确的签名是:

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

关于java - 无法使用 SAX 从 URL 解析 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904377/

相关文章:

java - 如何为不同类(class)内的 Activity 创建 toast

android - 如何将 ListView 项目的用户名、电子邮件和地址发送到 android 中的 onItemClick 下一个 Activity

android - SAX、StringBuilder 和内存泄漏

java - 合并 XML Web 内容文件

java - Android - 从任何地方启动通知?

java - Worklight 6 升级失控

java - Java 中的方法链接/锚定

xml - sed 多行范围匹配

xml - cvc-elt.1 : Cannot find the declaration of element 'data'

java - 解析xml以查找java中的元素