xmlpull,无法解析标记事件。只有文档

时间:2017-05-14 15:36:36

标签: java xml parsing

我搜索了我的问题,没有结果,所以我在这里问你所有的朋友。

这就是问题:

  

当我解析xml时,xmlpull总是解析这两个事件eventType(START_DOCUMENTEND_DOCUMENT),因此我无法解析标记eventType中的任何有用消息。

这是我的代码:

public Map<String, String> parse(Reader reader) {
        Map<String, String> result = new HashMap<>();
        try {
            // 
            XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
            parser.setInput(reader);
            // 
            int eventType = parser.getEventType();
            String name = null;
            String value = null;
            while (eventType != XmlPullParser.END_DOCUMENT) {
                if ((eventType == XmlPullParser.START_TAG)) {
                    name = parser.getName();
                } else if (eventType == XmlPullParser.TEXT) {
                    value = parser.getText();
                } else if (eventType == XmlPullParser.END_TAG) {
                    result.put(name, value);
                }
                eventType = parser.next();
            }
        } catch (XmlPullParserException | IOException e) {
            e.printStackTrace();
        }
        return result;
    }

我调试了我的代码,这是一个过程:
首先,eventType = START_DOCUMENT - &gt;然后,eventType = parser.next(); - &GT; eventType = END_DOCUMENT,所以我无法读取root的子节点。

那么,如何解决这个问题。首先感谢大家。

1 个答案:

答案 0 :(得分:0)

哦不,我发现了问题,这都是因为我在解析xml之前使用bufferedReader.readLine()来读取它...

如此愚蠢...