【发布时间】:2016-10-21 19:07:59
【问题描述】:
我正在根据本教程http://www.hermosaprogramacion.com/2015/05/tutorial-para-crear-un-lector-rss-en-android/在 Android 上创建一个 RSS 应用程序
我删除了一些我不想解析的标签,并且在原始 URL 上一切正常,福布斯 RSS“http://www.forbes.com/most-popular/feed”。一旦我更改了这个我想使用“http://aplicaciones.esi.us.es/antalumnos/rss.xml”的福布斯 RSS url,我就会收到这个错误:
06-20 13:51:44.961 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: org.simpleframework.xml.core.ValueRequiredException: Empty value for @org.simpleframework.xml.Element(data=false, name=description, required=true, type=void) on field 'descripcion' private java.lang.String com.herprogramacin.hermosaprogramacion.RssParse.Item.descripcion in class com.herprogramacin.hermosaprogramacion.RssParse.Item at line 11
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.readInstance(Composite.java:580)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.readElement(Composite.java:532)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.read(Composite.java:201)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Composite.read(Composite.java:148)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
06-20 13:51:44.971 11441-11494/com.herprogramacin.hermosaprogramacion W/System.err: at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:190)
第一行说“描述的空值”,但我不明白为什么。这是我的项目类代码,还有 2 个文件更多 por RSS 和 Channel:
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Namespace;
import org.simpleframework.xml.Root;
/**
* Clase que representa la etiqueta <item> del feed
*/
@Root(name = "item", strict = false)
public class Item {
@Element(name="title")
private String title;
@Element(name="description", required=false)
private String descripcion;
@Element(name="link")
private String link;
public Item() {
}
public Item(String title, String descripcion, String link) {
this.title = title;
this.descripcion = descripcion;
this.link = link;
;
}
public String getTitle() {
return title;
}
public String getDescripcion() {
return descripcion;
}
public String getLink() {
return link;
}
}
我要使用的网址有问题吗?
【问题讨论】:
-
堆栈跟踪的第一行显示“bla bla bla at line 11”。因此,如果您检查 URL 内容,在第 11 行有一个没有值的描述标签,即它是空的。所以不,您使用的 URL 没有问题。但我猜你还有一个问题(没有提到):How to handle empty tags using Simple XML framework?
-
我认为 required=false 在空的情况下就足够了。谢谢你,我会检查这种情况的解决方案
-
required=false 仅用于将元素(或属性)标记为不强制存在。但在这种情况下,它是存在的,但它是空的,这显然是框架的一个问题。我认为一种方法是使用自定义反序列化,你可以在这里看到一个例子stackoverflow.com/a/25962865/2160877