【问题标题】:XmlPullParser getAttributeValue returns nullXmlPullParser getAttributeValue 返回 null
【发布时间】:2013-12-11 13:07:27
【问题描述】:

我的 assets/xml 文件夹中存储了以下 XML 结构:

<?xml version="1.0" encoding="utf-8"?>
<homescreen>
    <homeitem name="Name1"
              subtext="Description1"
              icon="iconresource1" />
    <homeitem name="Name2"
              subtext="Description2"
              icon="iconresource2" />
    <homeitem name="Name3"
              subtext="Description3"
              icon="iconresource3" />
</homescreen>

我正在使用 XmlPullParser 读取每个人 homeitem

int event;
String TAG_ITEM = "homeitem";
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
    if (event == XmlPullParser.START_TAG) {
        String tag = parser.getName();
        if (TAG_ITEM.equals(tag)) {
            // Works - Logs "Name1"
            Log.d(LOG_NAME, parser.getAttributeValue(0));

            // Works - Logs "name"
            Log.d(LOG_NAME, parser.getAttributeName(0));

            // Works - Logs ""
            Log.d(LOG_NAME, parser.getAttributeNamespace(0));

            // Fails - Logs null
            Log.d(LOG_NAME, parser.getAttributeValue(XmlPullParser.NO_NAMESPACE, "name"));
        }
    }
}

我的问题是:使用 getAttributeValue(String, String) 总是返回 null。使用getAttributeValue(Integer) 工作正常。我做错了什么?

设备:Nexus 10、Stock KitKat 4.4

【问题讨论】:

    标签: android xml xml-parsing xmlpullparser


    【解决方案1】:

    试试这个:

    parser.getAttributeValue(null, "name"); 
    

    【讨论】:

    • 这行得通。我想我只是假设这需要与 getAttributeNamespace 返回的名称空间相同。
    • 无论如何应该传递(或不传递,看起来)这个参数?
    • 作品只在START_TAG案例中使用
    • 为什么我们总是在第一个参数(命名空间)中传递null?
    • 如果属性不存在,我认为它的默认值。
    猜你喜欢
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多