【问题标题】:Android 4.0 ice cream sandwich Dom Parser Null PointerAndroid 4.0 冰淇淋三明治 Dom Parser Null Pointer
【发布时间】:2011-11-09 07:53:50
【问题描述】:

到目前为止,我一直在使用此代码来解析 xml。它在以前版本的 android(直到 2.3.3)中运行良好。


NodeList list = element.getElementsByTagName("course");         

Element entry;                              
Element title;

if(list != null && list.getLength() > 0){


     for(int i=0;i < list.getLength(); i++){

        entry = (Element)list.item(i);                              
        title = (Element)entry.getElementsByTagName("course").item(0);  

        biz_name_p = title.getAttribute("biz_name");

    }
}

我有多个名称为“课程”的标签,因此我将其放入列表中。内部循环即时检查元素课程并从中提取几个字符串值。

当我尝试getAttribute("biz_name") 或任何其他属性时,它会抛出NullPointerException

这在以前的版本中运行良好,直到 ICS...

当我用列表中的主要标签替换“课程”时(在整个 xml 中只重复一次), 我收到了字符串值,但只有一次......他们在 Dom 解析器中改变了什么吗??

编辑
以下是我试图解析的 xml..

<golf> 
    <course biz_name="Club Circle Golf Course"/>  
    <course biz_name="Club Circle Golf Course1"/>
    <course biz_name="Club Circle Golf Course2"/>
</golf>

【问题讨论】:

  • 请同时发布您的 xml,或者至少发布与问题相关的部分内容
  • @LAS_VEGAS :我的错...以下是我试图解析的 xml。

标签: android dom


【解决方案1】:

我不明白为什么getElementsByTagName 会被多次调用。那你可以试试这个:

NodeList list = element.getElementsByTagName("course");         

Element entry;

if(list != null && list.getLength() > 0){

     for(int i=0;i < list.getLength(); i++){

        entry = (Element)list.item(i);
        biz_name_p = entry.getAttribute("biz_name");
    }
}

【讨论】:

  • Thnx 很多.. 这似乎工作正常......但我不明白为什么它在以前的 android 版本中工作正常而不是在 ICS 中?
  • 我也不明白。但我希望这也适用于以前的版本。
  • 是的,这工作得很好.. 但是我对 xml 有复杂性,它包含带有一些属性的根标签,并且里面还有一些带有自己属性的标签,到目前为止,我一直在为每个标签创建节点列表,但是在 ICS 中,我得到 0 作为根标签的节点列表长度(获得 1 个以前的 android 版本)。这是该 xml 的链接 api.amp.active.com/camping/campground/… M 抱歉没有正确格式化东西,我是堆栈溢出的新手 :) Thnx 为你的超快回复...
  • 嘿 las_vegas 我创建了新问题,这里是stackoverflow.com/questions/8066453/… Thnx 的链接,供您支持
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 2013-03-29
相关资源
最近更新 更多