0

我在使用 JAVA SAX 解析器解析此文件时遇到问题:

http://feeds.escapeartists.net/PodCastle_Main

大多数时候我得到例外:序言中不允许内容

我用Notepad++查看了文件,prolog还可以,至少我是这么认为的。

许多其他播客提要都有效,例如。http://feeds.feedburner.com/newz-of-the-world

有趣的是:播客提要的成功率约为 10%。

有什么建议么 ?

于尔根

编辑:有趣的是,我手动下载了文件并将其上传到我自己的网站空间。- 从那里一切都很好......奇怪

EDIT2:代码

        URL url = new URL(this.urlString);
        _setProxy(); // Set the proxy if needed 
        urlInputStream = url.openConnection().getInputStream();

        spf = SAXParserFactory.newInstance();
        sp = spf.newSAXParser();

        if ( urlInputStream == null) {
            System.out.println("blub blub");
        }
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

        System.out.println ("<<<<"+this.urlString+">>>> :" +  in.readLine() );
        System.out.println ("<<<<"+this.urlString+">>>> :" +  in.readLine() );
        in.close();


        InputStream is = url.openStream();

        try {

        sp.parse(url.toURI().toString(), this);

        } catch (SAXParseException e) {
            System.err.println(e.getMessage());
        }

输出:

<<<< ttp://feeds.escapeartists.net/PodCastle_Main>>>>:(不可打印字符)<<<< ttp://feeds.escapeartists.net/PodCastle_Main>>>>:(不可打印字符)

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:1-Byte-UTF-8-sequence 的字节 1 无效。...

sax 解析器的类似异常...

所以问题不是萨克斯,而是数据传输。它的工作时间大约有一半。所有其他 testet .xml 文件都可以工作。

有人知道这个效果吗?

4

2 回答 2

0

现在我已经实现了这个解决方法。我认为发布网站的网络服务器有问题

       int TRIES = 10;
        for (int tries = 0; tries < TRIES; tries++) {
            InputStream is = url.openStream();
            try {

                sp.parse(is, this);
                //here succesfull
                tries = TRIES; //break loop

            } catch (SAXParseException e) {
                System.err.println(e.getMessage());
            } catch (MalformedByteSequenceException ex) {
                System.out.println("Connection to " + url.toString() + " failed "+ (tries+1) +" times , trying again... (maximum tries = "+ TRIES +")");
                 Thread.sleep(250);
            }
      }

经过 2 或 3 次尝试后,流工作

于 2012-08-21T06:49:00.210 回答
0

可能您的文档的开头不干净——可能是一两个额外的字符意外进入。您应该能够从 SAXException 中提取它反对的行和列。

于 2013-09-30T13:23:24.840 回答