【问题标题】:xml pull parser assets xmlxml 拉解析器资产 xml
【发布时间】:2011-02-23 00:22:44
【问题描述】:

如何使用拉解析器解析资产文件夹中的本地 XML 文件?我无法让拉解析器工作。它总是抛出一个 io 异常。我想我无法获取文件的路径,或无法连接到文件。

【问题讨论】:

  • 你会考虑Pull以外的解析器吗?

标签: xml android ioexception xmlpullparser


【解决方案1】:

混音,

我正在尝试从“资产”和“资源”中加载本地文件的各种方法,但要按要求回答您的问题(因为其他人似乎没有):

首先,在测试之前确保您的 XML 有效或关闭验证,您可以这样做并同时实例化一个拉解析器:

    try {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setValidating(false);
        XmlPullParser myxml = factory.newPullParser();

然后打开 xml 文件并将其设置为拉解析器的输入:

        InputStream raw = getApplicationContext().getAssets().open("simple.xml");
        myxml.setInput(raw, null);

现在设置您的拉环(或其他,取决于您是否要进行延迟拉环,这是您的设计决定:

        int eventType = myxml.getEventType();
        while(eventType != XmlPullParser.END_DOCUMENT) {
            if(eventType == XmlPullParser.START_DOCUMENT) {

                Log.d(MY_DEBUG_TAG, "In start document");
            }
            else if(eventType == XmlPullParser.START_TAG) {
                Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName());
            }
            else if(eventType == XmlPullParser.END_TAG) {
                Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName());

            }
            else if(eventType == XmlPullParser.TEXT) {
                Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText());
            }
            eventType = myxml.next();
        }
    } catch (XmlPullParserException e) {

注意 myxml.getEventType() ,您需要执行此操作才能进行解析并处理您要提取的类型事件。注意:为了便于阅读,省略了 catch 块。

在2.1上测试过,希望对你有帮助 -弗兰克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2014-04-23
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多