标签: xmlpullparser

Xml getText返回null - Android

我在Android上使用XmlPullParser但getText返回null.为什么会这样?

代码,注释行给出null

    ArrayList<String> titleList = new ArrayList<String>();
    try {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();

        xpp.setInput(this.getInputStream(), null);
        int eventType = xpp.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {
                if (xpp.getName().equalsIgnoreCase(TITLE)) {
//                  MainActivity.itemsList.add(xpp.getText());
                    Log.d("XGamers", "a");
                }
            }``
            eventType = xpp.next();
        }
    } catch (XmlPullParserException e) {
        Log.e("XGamers", "XmlPullParserException in FeedParser");
    } catch (IOException e) {
        Log.e("XGamers", "IOException in FeedParser");
    }
Run Code Online (Sandbox Code Playgroud)

xml android gettext nullpointerexception xmlpullparser

7
推荐指数
1
解决办法
3307
查看次数

如何在android中使用xmlpullparser从嵌套的xml中提取文本?

<doc>
 <element>
  text
     <item>
     text1
     </item>
     <item>
     text2
     </item>
  text3
 </element>
 <element>
  another text
 </element>


 ...
</doc>
Run Code Online (Sandbox Code Playgroud)

我想将文本提取为如下字符串:

 "text text1 text2 text3"
Run Code Online (Sandbox Code Playgroud)

"item"标签嵌套在"元素"中

我在Android中使用xmlpullparser,但如果它更容易,我可以使用任何其他解析器.TX.

xml android nested xmlpullparser

6
推荐指数
1
解决办法
8116
查看次数

XmlPullParser:PI不能以xml开头,而只能在Android 2.3.3上向下开始

我在Android 3.0+上没有错误,但只有在Android 2.2,2.3.3上,当我尝试通过解析一个小的XML文件时XmlPullParser,应用程序会出现错误:

org.xmlpull.v1.XmlPullParserException: PI must not start with xml 
(position:unknown @1:5 in java.io.InputStreamReader@40568770) 
Run Code Online (Sandbox Code Playgroud)

PI中提到的PI是什么?

我发现这可能会导致第一行XML文件(<?xml version="1.0" encoding="utf-8"?>),但我没有找到在较低的Android版本上发生这种情况的原因.

如果这是错误的原因(XML文件的第一行),我该如何解决这个问题?

我应该:
a)要求Web服务器的管理员更改XML?如果是的话,他应该在XML中改变什么?
b)子串InputStream使用BufferedReader

不知何故,我认为第二种方法会导致弱Android手机的额外延迟.

编辑

我从调试器中提取XML内容并看到第一个结束时\r\n,然后下一个字符开始.这对你说什么吗?

这就是XML文件的样子.这是一个小的,并没有视觉原因为什么应用程序崩溃.

<?xml version="1.0" encoding="utf-8"?>
<song>
  <artist>Pink Floyd</artist>
  <title>Shine On You Crazy Diamond</title>
  <picture>http://www.xxyz.com/images/image.jpg</picture>
  <time>Fri, 23 Nov 2012 11:22:31 GMT</time>
</song>
Run Code Online (Sandbox Code Playgroud)

这就是从这个XML中取出的InputStream的样子(仅限起始字符).

请指教!!!

android xmlpullparser xml-parsing

6
推荐指数
1
解决办法
2742
查看次数

Android:解析XML数据的最佳解析器

我正在开发一个应用程序,其中第一次我要解析来自远程服务器的xml文件中的数据.

但我无法选择哪种解析器有效或最适合解析.由于主要有三种类型的解析,我知道:

  1. SAX
  2. XMLPullParsing
  3. DOM

哪个是解析数据的最佳解析器?当我在Google上搜索并发现上述解析器的正反两面时.但我无法确定哪种效率最高.

XML具有大量标签的大量数据.

请指导我并建议我应该使用哪个解析器,因为我在我的应用程序中第一次使用解析.

android saxparser xmlpullparser android-parser android-xml

6
推荐指数
2
解决办法
6174
查看次数

net.sqlcipher.database.SQLiteException:不是错误:

我在我的Android应用程序数据库中收到此错误.

SQLite数据库中,我assets借助此代码从文件夹中的脚本获取数据库查询.

manager = context.getResources().getAssets();
            input = manager.open("createDb.xml");
            xpp.setInput(input, null);
            int type = xpp.getEventType();
            while(type != XmlPullParser.END_DOCUMENT) {
                if(type == XmlPullParser.START_DOCUMENT) {

                    Log.d(Tag, "In start document");
                }
                else if(type == XmlPullParser.START_TAG) {
                    Log.d(Tag, "In start tag = "+xpp.getName());
                }
                else if(type == XmlPullParser.END_TAG) {
                    Log.d(Tag, "In end tag = "+xpp.getName());

                }
                else if(type == XmlPullParser.TEXT) {
                    Log.d(Tag, "Have text = "+xpp.getText()); 
                    String strquery = xpp.getText();
                    db.execSQL(strquery);
                }
                type = xpp.next();
            }
        } 
        catch (XmlPullParserException e) { …
Run Code Online (Sandbox Code Playgroud)

sqlite android xmlpullparser sqlcipher

6
推荐指数
2
解决办法
2296
查看次数

XmlPullParser getAttributeValue返回null

我在assets/xml文件夹中存储了以下XML结构:

<?xml version="1.0" encoding="utf-8"?>
<homescreen>
    <homeitem name="Name1"
              subtext="Description1"
              icon="iconresource1" />
    <homeitem name="Name2"
              subtext="Description2"
              icon="iconresource2" />
    <homeitem name="Name3"
              subtext="Description3"
              icon="iconresource3" />
</homescreen>
Run Code Online (Sandbox Code Playgroud)

我正在homeitem使用XmlPullParser 阅读每个人:

int event;
String TAG_ITEM = "homeitem";
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
    if (event == XmlPullParser.START_TAG) {
        String tag = parser.getName();
        if (TAG_ITEM.equals(tag)) {
            // Works - Logs "Name1"
            Log.d(LOG_NAME, parser.getAttributeValue(0));

            // Works - Logs "name"
            Log.d(LOG_NAME, parser.getAttributeName(0));

            // Works - Logs ""
            Log.d(LOG_NAME, parser.getAttributeNamespace(0));

            // Fails - Logs null
            Log.d(LOG_NAME, parser.getAttributeValue(XmlPullParser.NO_NAMESPACE, …
Run Code Online (Sandbox Code Playgroud)

xml android xmlpullparser xml-parsing

6
推荐指数
1
解决办法
1万
查看次数

如何在Android中创建AttributeSet?

我试图在Android中编写一些代码来设置AttributeSetfrom attrs.xml文件中的参数.但我收到"资源未找到"错误.

Java代码

MainActivity.java

package com.example.mycompoundbutton;

import org.xmlpull.v1.XmlPullParser;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Xml;
import android.app.Activity;
import android.content.res.Resources;


public class MainActivity extends Activity 
{

@Override
protected void onCreate(Bundle savedInstanceState) 
{

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Resources res = this.getResources();

    XmlPullParser parser = res.getXml(R.attr.xyz);

    AttributeSet attrs = Xml.asAttributeSet(parser);

    MyCompound my = new MyCompound(this,attrs);

    my.MyTestFun(300,500);

}
}
Run Code Online (Sandbox Code Playgroud)

MyCompound.java

package com.example.mycompoundbutton;


import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.CompoundButton;

public class MyCompound extends CompoundButton
{

public MyCompound(Context context, AttributeSet attrs) 
{

        super(context, attrs);

        TypedArray …
Run Code Online (Sandbox Code Playgroud)

xml android xmlpullparser android-attributes

6
推荐指数
1
解决办法
1万
查看次数

改进分段上传图像失败

我正在尝试使用Retrofit库上传图像.这是我上传的方式:

请求代码:

@Multipart
@POST("/customerapp/{context}/{token}/passenger/passport/add/{passengerId}")
@Headers({
        "Accept: application/xml",
        "Accept-Encoding: gzip"
})
void UploadImage(
        @Path("context") String context,
        @Path("token") String token,
        @Path("passengerId") String passengerId,
        @Query("fileType") String fileType,
        @Query("imageCategory") int imageCategory,
        @Part("imageContent") TypedFile file,
        Callback<VJSuccessResponse> callback
);



public static final String BASE_URL = 
    "http://webservicetest.abc.com/extranetServices/1.1";

RequestInterceptor requestInterceptor = new RequestInterceptor() {
            @Override
            public void intercept(RequestFacade request) {
                Log.e("Retrofit Request Body", request.toString());
            }
        };

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(BackendConstants.BASE_URL)
                .setClient(new OkClient(new OkHttpClient()))
                .setConverter(new SimpleXMLConverter())
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setRequestInterceptor(requestInterceptor)
                .build();

        REST_CLIENT = restAdapter.create(BackendAPI.class);

        REST_CLIENT.UploadImage(
                BackendConstants.CONTEXT,
                StateObject.sSPManager.getStoredPersonalDetails().getToken(),
                passengerId,
                new …
Run Code Online (Sandbox Code Playgroud)

file-upload file multipart xmlpullparser retrofit

6
推荐指数
1
解决办法
1万
查看次数

仅在ICS上的XmlPullParserException

我的问题是我必须解析HTML数据

84 101 <br>some text<br><table border='1'>Here comes a table definition</table>
Run Code Online (Sandbox Code Playgroud)

并且XmlPullParserException抛出以下内容:

while (eventType != XmlPullParser.END_DOCUMENT) {
    if (eventType == XmlPullParser.START_TAG) {
        // do something
    } else if (eventType == XmlPullParser.END_TAG) {
        // do something else 
    }

    eventType = xpp.next(); // the XmlPullParserException is thrown here, on method next()
}
Run Code Online (Sandbox Code Playgroud)

非常有趣和奇怪的部分是这样的:仅在Nexus S(OS版本4.0.4)上抛出异常,在具有较低OS版本的设备上,此方法运行良好.

错误消息如下:

org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT 84 101 @1:8 in java.io.StringReader@414e3248)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我为什么只在ICS上发生这种情况?谢谢.

android xmlpullparser xml-parsing android-4.0-ice-cream-sandwich

5
推荐指数
1
解决办法
888
查看次数

gradle 中的组、模块和工件是什么?

gradle 文档不会花时间解释他们正在处理的实体。这就是为什么我想问这样一个基本问题。

我需要详细了解术语“组”、“模块”和“工件”对于更改此代码的真正含义:

compile('com.thoughtworks.xstream:xstream:1.4.7') {
    exclude group: 'xmlpull', module: 'xmlpull'
}
Run Code Online (Sandbox Code Playgroud)

大约一年前,我使用从Android dalvik 转换中为 xmlpullparser获取的排除语句来修复多个 dex 文件故障。

但是升级到Android Studio 3.0后又出现这个错误!现在它说:Multiple dex files define Lorg/xmlpull/mxp1/MXParser有时...XmlPullParserException.java所以,我想了解我给出的参数exclude必须如何形成。

阅读文档,人们可能会认为组是包名称,而工件是类

//excluding a particular transitive dependency:
exclude module: 'cglib' //by artifact name
exclude group: 'org.jmock' //by group
exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
Run Code Online (Sandbox Code Playgroud)

另一个中文页面翻译)使用了那些排除项

 compile ( 'com.thoughtworks.xstream: xstream: 1.4.7' ) {
       exclude group : …
Run Code Online (Sandbox Code Playgroud)

android xstream gradle xmlpullparser android-gradle-plugin

5
推荐指数
1
解决办法
3287
查看次数