[英]Parse xml with namespace in RootElement in android sax parser
I try parse this rss news using android sax parser . 我尝试使用android sax解析器解析此rss新闻 。
final RSSItem currentMessage = new RSSItem();
RootElement root = new RootElement("rss");
final List<RSSItem> messages = new ArrayList<RSSItem>();
Element channel = root.getChild("channel");
Element item = channel.getChild(ITEM);
But I catch exception: 但我发现异常:
05-08 18:29:25.004 2820-2820/com.xmlsimplesaxparser V/SimpleRss2ParserDemo﹕ android.sax.BadXmlException: Line 1: Root element name does not match. Expected: 'rss', Got: 'http://backend.userland.com/rss2:rss'
When I add namespace: 当我添加名称空间时:
static final String NAMESPACE ="http://backend.userland.com/rss2";
: :
final RSSItem currentMessage = new RSSItem();
RootElement root = new RootElement(NAMESPACE, "rss");
final List<RSSItem> messages = new ArrayList<RSSItem>();
Element channel = root.getChild(NAMESPACE, "channel");
Element item = channel.getChild(NAMESPACE, ITEM);
I get NullPointerException
. 我得到
NullPointerException
。 How to use namespace in sax parser? 如何在sax解析器中使用名称空间?
I corrected this problem: needed add namespace to all tags 我更正了这个问题:需要将命名空间添加到所有标签
final RSSItem currentMessage = new RSSItem();
RootElement root = new RootElement(NAMESPACE, "rss");
final List<RSSItem> messages = new ArrayList<RSSItem>();
Element channel = root.getChild(NAMESPACE, "channel");
//Element mainTitle = channel.getChild(NAMESPACE,"title");
Element item = channel.getChild(NAMESPACE,ITEM);
item.setEndElementListener(new EndElementListener() {
public void end() {
messages.add(currentMessage.copy());
}
});
item.getChild(NAMESPACE,TITLE).setEndTextElementListener(new EndTextElementListener() { //this add namespace too
public void end(String body) {
currentMessage.setTitle(body);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.