Android Java传递XML解析器

Android Java传递XML解析器,java,android,xml,xml-parsing,Java,Android,Xml,Xml Parsing,我已经编写了一个程序从Eclipse中的XML文件中获取数据,并且我已经打印到一个文本视图中,以确保尝试工作正常,但是它没有传递数据,但是我不确定我是否获得了错误的参数,或者我调用的参数不正确,因此非常感谢您的帮助 public class AnimalList extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceStat

我已经编写了一个程序从Eclipse中的XML文件中获取数据,并且我已经打印到一个文本视图中,以确保尝试工作正常,但是它没有传递数据,但是我不确定我是否获得了错误的参数,或者我调用的参数不正确,因此非常感谢您的帮助

public class AnimalList extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_animal_list);

    //pulls data from XML file
    XmlPullParserFactory pullParserFactory;
    try 
    {
        pullParserFactory = XmlPullParserFactory.newInstance();
        XmlPullParser parser = pullParserFactory.newPullParser();

            InputStream in_s = getApplicationContext().getAssets().open("animals.xml");
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in_s, null);

            parseXML(parser);

            TextView display = (TextView)findViewById(R.id.animalInfo);
            display.setText("crap");

    } 
    catch (XmlPullParserException e) 
    {
        e.printStackTrace();


    } 
    catch (IOException e) 
    {
        //Auto-generated catch block
        e.printStackTrace();


    }
}
我知道上面的工作是通过打印到文本视图,但下一步我有

private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
{
    ArrayList<Animal> animals = new ArrayList<Animal>();
    int eventType = parser.getEventType();
    Animal currentAnimal = null;


    while (eventType != XmlPullParser.END_DOCUMENT)
    {

        String name = null;
        switch (eventType)
        {
            case XmlPullParser.START_DOCUMENT:
                //animals = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                name = parser.getName();
                if (name == "animal")
                {
                    currentAnimal = new Animal();
                } 
                else if (currentAnimal != null)
                {
                    if (name == "specificLocation")
                    {
                        currentAnimal.specificLocation = parser.nextText();
                    } 
                    else if (name == "name"){
                        currentAnimal.name = parser.nextText();
                    } 
                    else if (name == "location")
                    {
                        currentAnimal.location= parser.nextText();
                    }  
                    else if (name == "image")
                    {
                        currentAnimal.image= parser.nextText();
                    }  
                    else if (name == "animalInfo")
                    {
                        currentAnimal.animalInfo= parser.nextText();
                    }  
                    else if (name == "todaysFeed")
                    {
                        currentAnimal.todaysFeed= parser.nextText();
                    }  
                }
                break;
            case XmlPullParser.END_TAG:
                name = parser.getName();
                if (name.equalsIgnoreCase("animal") && currentAnimal != null){
                    animals.add(currentAnimal);
                } 
        }
        eventType = parser.next();
    }

    printAnimals(animals);
}
private void parseXML(XmlPullParser-parser)抛出xmlpullparsexception,IOException
{
ArrayList动物=新的ArrayList();
int eventType=parser.getEventType();
Animal currentAnimal=null;
while(eventType!=XmlPullParser.END_文档)
{
字符串名称=null;
开关(事件类型)
{
案例XmlPullParser.START_文档:
//动物=新的ArrayList();
打破
case XmlPullParser.START_标记:
name=parser.getName();
如果(名称==“动物”)
{
currentAnimal=新动物();
} 
else if(currentAnimal!=null)
{
如果(名称=“特定位置”)
{
currentAnimal.specificLocation=parser.nextText();
} 
else if(名称=“名称”){
currentAnimal.name=parser.nextText();
} 
else if(名称=“位置”)
{
currentAnimal.location=parser.nextText();
}  
else if(name==“image”)
{
currentAnimal.image=parser.nextText();
}  
else if(name==“animalInfo”)
{
currentAnimal.animalInfo=parser.nextText();
}  
else if(name==“todaysFeed”)
{
currentAnimal.todaysFeed=parser.nextText();
}  
}
打破
case XmlPullParser.END_标记:
name=parser.getName();
if(name.equalsIgnoreCase(“动物”)和¤tAnimal!=null){
动物。添加(当前动物);
} 
}
eventType=parser.next();
}
动物(动物);
}
然后它里面的代码什么也没做,所以希望有人能指出我是否正确地传递了它?在第二秒内,它只是将数据放入一个数组,但如果我在执行任何操作之前先放入一个文本视图输出,它就不会执行任何操作,这让我觉得它没有传递数据


谢谢。

搜索标签名称您已经比较了引用,但没有比较字符串。除此之外,它工作得很好。因此,parseXML将如下所示:

private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
{
    ArrayList<Animal> animals = new ArrayList<Animal>();
    int eventType = parser.getEventType();
    Animal currentAnimal = null;


    while (eventType != XmlPullParser.END_DOCUMENT)
    {

        String name = null;
        switch (eventType)
        {
            case XmlPullParser.START_DOCUMENT:
                //animals = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                name = parser.getName();
                if (name.equalsIgnoreCase( "animal"))
                {
                    currentAnimal = new Animal();
                } 
                else if (currentAnimal != null)
                {
                    if (name.equalsIgnoreCase( "specificLocation"))
                    {
                        currentAnimal.specificLocation = parser.nextText();
                    } 
                    else if (name .equalsIgnoreCase( "name")){
                        currentAnimal.name = parser.nextText();
                    } 
                    else if (name .equalsIgnoreCase( "location"))
                    {
                        currentAnimal.location= parser.nextText();
                    }  
                    else if (name .equalsIgnoreCase( "image"))
                    {
                        currentAnimal.image= parser.nextText();
                    }  
                    else if (name .equalsIgnoreCase(  "animalInfo"))
                    {
                        currentAnimal.animalInfo= parser.nextText();
                    }  
                    else if (name .equalsIgnoreCase(  "todaysFeed"))
                    {
                        currentAnimal.todaysFeed= parser.nextText();
                    }  
                }
                break;
            case XmlPullParser.END_TAG:
                name = parser.getName();
                if (name.equalsIgnoreCase("animal") && currentAnimal != null){
                    animals.add(currentAnimal);
                } 
        }
        eventType = parser.next();
    }

    printAnimals(animals);
}   
private void parseXML(XmlPullParser-parser)抛出xmlpullparsexception,IOException
{
ArrayList动物=新的ArrayList();
int eventType=parser.getEventType();
Animal currentAnimal=null;
while(eventType!=XmlPullParser.END_文档)
{
字符串名称=null;
开关(事件类型)
{
案例XmlPullParser.START_文档:
//动物=新的ArrayList();
打破
case XmlPullParser.START_标记:
name=parser.getName();
if(名称、等信号情况(“动物”))
{
currentAnimal=新动物();
} 
else if(currentAnimal!=null)
{
if(name.equalsIgnoreCase(“specificLocation”))
{
currentAnimal.specificLocation=parser.nextText();
} 
else if(name.equalsIgnoreCase(“name”)){
currentAnimal.name=parser.nextText();
} 
else if(name.equalsIgnoreCase(“位置”))
{
currentAnimal.location=parser.nextText();
}  
else if(name.equalsIgnoreCase(“图像”))
{
currentAnimal.image=parser.nextText();
}  
else if(name.equalsIgnoreCase(“animalInfo”))
{
currentAnimal.animalInfo=parser.nextText();
}  
else if(name.equalsIgnoreCase(“todaysFeed”))
{
currentAnimal.todaysFeed=parser.nextText();
}  
}
打破
case XmlPullParser.END_标记:
name=parser.getName();
if(name.equalsIgnoreCase(“动物”)和¤tAnimal!=null){
动物。添加(当前动物);
} 
}
eventType=parser.next();
}
动物(动物);
}   
希望有帮助:)
Marcin

查看
parseXML()
中的代码会有所帮助。啊,我们还需要查看您在哪里创建
解析器。