android - myParser.getText 总是返回 null

标签 android xml xml-parsing

所以,我很菜鸟,我正在尝试解析 this xml获取意大利电视节目列表。 但是当我使用 myParser.getText 时,它将返回 null。 我实际上进入了节点,但它不会从中获得任何值(value)。

    public void parseXMLAndStoreIt(XmlPullParser myParser) {
    int event;
    String text=null;
    try {
        event = myParser.getEventType();
        while (event != XmlPullParser.END_DOCUMENT) {
            String name=myParser.getName();
            switch (event){

                case XmlPullParser.START_TAG:
                    if(name.equals("display-name")){
                        channel = myParser.getText();
                        Log.d(name+" -->",myParser.getText());
                    }
                    else if(name.equals("programme")){
                        hour = myParser.getAttributeValue(null,"start");
                        Log.d(name+" -->",hour);
                    }
                    else if(name.equals("title")){
                        programme = myParser.getText();
                        Log.d(name+" -->",myParser.getText());
                    }
                    else if(name.equals("desc")){
                        description =  myParser.getText();
                        Log.d(name+" -->",myParser.getText());
                    }
                    else {}
                    break;
                case XmlPullParser.END_TAG:
            }
            event = myParser.next();
        }
        parsingComplete = false;
    }

    catch (Exception e) {
        e.printStackTrace();
    }
}

现在我的日志不会返回任何内容,因为 myParser.getText 为空,但如果我只打印名称,它实际上会返回节点。 getAttributeValue 有效,但在这种情况下我需要它

else if(name.equals("programme")){
                        hour = myParser.getAttributeValue(null,"start");
                        Log.d(name+" -->",hour);

最佳答案

我假设您声明的变量 channel, hour, programme, description 是类变量?我看不到这些声明在哪里,但想确定一下。

至于 getText() 我认为你需要在 TEXT 事件中实际使用它,而不是 START_TAG

getText

在 API 级别 1 中添加 String getText()

以字符串形式返回当前事件的文本内容。值(value) 返回取决于当前事件类型,例如对于 TEXT 事件它 是元素内容(这是使用 next() 时的典型情况)。看 description of nextToken() 对可能的详细描述 不同类型事件的返回值。

https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html#getText()

关于android - myParser.getText 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37683398/

相关文章:

java - XML属性解析

使用 Boost.Interprocess 的 Android C++ IPC - 它应该工作吗?

android - notifyDataSetChanged() 在更改从 firebase 检索的 ListView 数据时导致 NullPointerException

SQL Server - 仅使用 .modify() 合并两个 XML

xml - 使用 XSLT 1.0 对多个属性进行分组

java - Android微调器删除下拉垂直额外空间/填充

xml - 使用 xmllint 提取最后一个子元素值

android - 如何在 android 中使用 Bundle 标记 FB 事件

android - 在Android中绘制图表线

ios - 在iphone中解析包含unicode字符的XML文件