首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAX解析器上的文档意外结束(怀疑输入流多次使用)

SAX解析器上的文档意外结束(怀疑输入流多次使用)
EN

Stack Overflow用户
提问于 2012-06-19 02:42:03
回答 1查看 665关注 0票数 0

我遇到了意想不到的文档结尾:

代码语言:javascript
复制
Document xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputStream);

然而,我有一些线索,我认为我的错误可能与SAX pareser无关。以下是我的简化代码片段。

代码语言:javascript
复制
    public boolean createDataList(InputStream inputStream) {

        try {               
            XmlHelper xmlHelper = new XmlHelper();

            ArrayList<Category> categories = xmlHelper.getCategoriesFromXml(inputStream);
            ArrayList<Budget> budgetEntries = xmlHelper.getBudgetFromXml(inputStream);                  
            ArrayList<StandingOrder> standingOrders = xmlHelper.getOrdersFromXml(inputStream);

            return true;

        } catch (Exception e) {

            return false;
        }           
    }

3个ArrayList getters指向导致问题的行。它们都使用相同的InputStream。所有的方法都大同小异,我相信它们都能很好地工作……只是分开。只有第一个数组getter成功执行,第二个和第三个总是失败,不管它是什么顺序,第一个都很好。

我怀疑使用相同的InputStream有什么问题,我试图在每个数组getter之后关闭输入-没有效果。请给我一些线索。我真的很感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-19 02:50:55

我怀疑在读取时,输入流会一直向前通过您的文件,直到最后。因为我认为SAX解析器不会调用mark()和reset()来将读取器定位到文件的开头,所以当您第二次调用它时,就没有什么可读的了。

顺便说一下,为什么不同时解析和创建所有3个列表,然后通过getter在XMLHelper外部公开它们呢?这也可以提高您的性能,避免至少2次完整的I/O操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11089020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档