简体   繁体   English

在android sax解析器中使用RootElement中的命名空间解析xml

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM