Java 如何从xml文件中读取数据,并将条目添加到ArrayList中

Java 如何从xml文件中读取数据,并将条目添加到ArrayList中,java,android,xml,arraylist,Java,Android,Xml,Arraylist,我在我的android应用程序中有带书籍的ArrayList,我在MainActivity中添加了100项,如下所示: a = new Book("J. K. Roaling", "Harry Potter", R.drawable.book_cover1); bookList.add(a); 但是我不喜欢这样的事实,因为MainActivity.java中有很多行。我想将所有行移到一个XML文件中。但是我不知道如何实现xml文件本身并从中读取数据。您需要在下面的代码中执行XMLPullPar

我在我的android应用程序中有带书籍的ArrayList,我在MainActivity中添加了100项,如下所示:

a = new Book("J. K. Roaling", "Harry Potter", R.drawable.book_cover1);
bookList.add(a);

但是我不喜欢这样的事实,因为MainActivity.java中有很多行。我想将所有行移到一个XML文件中。但是我不知道如何实现xml文件本身并从中读取数据。

您需要在下面的代码中执行XMLPullParsing,请检查

XML文件

XMLPullParserHandler


此处为public List parseInputStream此方法返回您案例中的员工列表这是一本书的列表了解更多信息请参考此链接,不要向下投票我的问题可能重复为什么要使用XML?最好使用json并将其存储在assets文件夹中,然后使用gson进行反序列化
<?xml version="1.0" encoding="UTF-8"?>  
<employees>  
    <employee>  
        <id>1</id>  
        <name>Sachin</name>  
        <salary>50000</salary>        
    </employee>  
    <employee>  
        <id>2</id>  
        <name>Nikhil</name>  
        <salary>60000</salary>    
    </employee>  
</employees>
public class Employee {  
     private int id;  
     private String name;  
     private float salary;  
        public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public float getSalary() {  
        return salary;  
    }  
    public void setSalary(float salary) {  
        this.salary = salary;  
    }  
}   
import java.io.IOException;  
import java.io.InputStream;  
import java.util.ArrayList;  
import java.util.List;  
import org.xmlpull.v1.XmlPullParser;  
import org.xmlpull.v1.XmlPullParserException;  
import org.xmlpull.v1.XmlPullParserFactory;  


public class XmlPullParserHandler {  
    private List<Employee> employees= new ArrayList<Employee>();  
    private Employee employee;  
    private String text;  

    public List<Employee> getEmployees() {  
        return employees;  
    }  

    public List<Employee> parse(InputStream is) {  
           try {  
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
            factory.setNamespaceAware(true);  
            XmlPullParser  parser = factory.newPullParser();  

            parser.setInput(is, null);  

            int eventType = parser.getEventType();  
            while (eventType != XmlPullParser.END_DOCUMENT) {  
                String tagname = parser.getName();  
                switch (eventType) {  
                case XmlPullParser.START_TAG:  
                    if (tagname.equalsIgnoreCase("employee")) {  
                        // create a new instance of employee  
                        employee = new Employee();  
                    }  
                    break;  

                case XmlPullParser.TEXT:  
                    text = parser.getText();  
                    break;  

                case XmlPullParser.END_TAG:  
                    if (tagname.equalsIgnoreCase("employee")) {  
                        // add employee object to list  
                        employees.add(employee);  
                    }else if (tagname.equalsIgnoreCase("id")) {  
                        employee.setId(Integer.parseInt(text));  
                    }  else if (tagname.equalsIgnoreCase("name")) {  
                        employee.setName(text);  
                    } else if (tagname.equalsIgnoreCase("salary")) {  
                        employee.setSalary(Float.parseFloat(text));  
                    }   
                    break;  

                default:  
                    break;  
                }  
                eventType = parser.next();  
            }  

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

        return employees;  
    }  
}