使用DOM4J解析XML的大致步骤
1:创建SAXReader
2:使用SAXReader读取XML文档并生成Document对象
Document对象内部就保存了XML文档描述的整棵树结构
3:通过Document对象获取根元素
4:从根元素开始逐级获取子元素已达到遍历XML文档的目的

Element的每一个实例用于表示XML文档中的一个元素(一对标签)
常用的方法:
String getName() 获取标签名
String getText() 获取标签中间的文本数据
Element element(String name) 获取指定名字的子标签
List elements() 获取所有子标签,集合中为若干Element实例
List elements(String name) 获取所有同名子标签(指定的名字)

标签上的属性:attributeValue(String str)<===>attribute(String str).getValue(String value);

String elementText(String name) 获取指定名字的子标签的中间的文本
例如:
e.elementText(“abc”);
等同于
e.element(“abc”).getText();

package xml;

        import org.dom4j.Attribute;
        import org.dom4j.Document;
        import org.dom4j.Element;
        import org.dom4j.io.SAXReader;

        import java.util.List;

/**
 * 解析xml文档
 *
 * 解析XML有两种常见的方式
 * 1:SAX解析:Simple API for Xml
 *   逐行扫描解析,速度块,内存消耗小,但是不能对XML文档进行修改。
 *
 * 2:DOM解析:Document Object Model
 *   DOM是w3c推荐的解析方式,称为文档对象模型
 *   DOM解析其内部会将XML文档先读取完毕后内建整个树状模型,然后让我们解析
 *   时通过遍历树状结构来达到解析目的。
 *
 *
 *   dom4j(dom for java)是java中常见的以DOM形式解析XML文档的API。
 */
public class ParseXmlDemo {
    public static void main(String[] args) {
        /*
            使用DOM4J解析XML的大致步骤
            1:创建SAXReader
            2:使用SAXReader读取XML文档并生成Document对象
              Document对象内部就保存了XML文档描述的整棵树结构
            3:通过Document获取根元素
            4:从根元素开始逐级获取子元素已达到遍历XML文档的目的
         */
        try{
            //1:创建SAXReader
            SAXReader reader = new SAXReader();
            //2:读取XML文档并生成Document
            Document doc = reader.read("./emplist.xml");
            /*
                3:通过Document获取根元素(XML的根标签)
                Element的每一个实例用于表示XML文档中的一个元素(一对标签)
                常用的方法:
                String getName()    获取标签名
                String getText()    获取标签中间的文本数据
                Element element(String name)    获取指定名字的子标签
                List elements()     获取所有子标签,集合中为若干Element实例
                List elements(String name)      获取所有同名子标签(指定的名字)

                String elementText(String name) 获取指定名字的子标签的中间的文本
                例如:
                e.elementText("abc");
                等同于
                e.element("abc").getText();
             */
            Element root = doc.getRootElement();
            System.out.println(root.getName());//list
            //获取每个员工信息(通过根标签获取所有<emp>子标签)
            List<Element> list = root.elements("emp");//获取根标签"emp"下的所有子标签
            System.out.println(list.size());
            //遍历子标签
            for(Element empEle:list){
                //获取员工名字
//                Element nameEle = empEle.element("name");//获取emp中的子标签<name>
//                String name = nameEle.getText();//获取name标签中的文本信息
                String name = empEle.elementText("name");

                //获取员工年龄
//                Element ageEle = empEle.element("age");
//                int age = Integer.parseInt(ageEle.getText());
                int age = Integer.parseInt(empEle.elementText("age"));

                //获取员工性别
//                Element genderEle = empEle.element("gender");
//                String gender = genderEle.getText();
                String gender = empEle.elementText("gender");

                //获取员工工资
//                Element salaryEle = empEle.element("salary");
//                int salary = Integer.parseInt(salaryEle.getText());
                int salary = Integer.parseInt(empEle.elementText("salary"));

//                获取员工工号
//                Attribute attr = empEle.attribute("id");
//                int id = Integer.parseInt(attr.getValue());

//                int id = Integer.parseInt(empEle.attribute("id").getValue());

                int id = Integer.parseInt(empEle.attributeValue("id"));

                System.out.println("name:"+name+","+"工号:"+id+","+"年龄:"+age+","+"sex:"+gender+","+"薪资:"+salary);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

输出结果:

dom4j 读取android_List