Java学习笔记之:XML遍历方式

一、介绍

 XML:可扩展标记语言,可以跨平台,注重的是数据传输,不同的语言有不同的解析方法

 Html:超文本标记语言,注重的是数据显示
 三种解析XML文件的方式 1.SAX解析XML 2.DOM解析xml 3.Pull解析xml

二、java遍历xml方式

xml:文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
要有根节点
没有预定义标签只有自定义标签,有双标签和单标签
属性也是自定义的,属性的值要使用双引号。只有字符串
只有双标签有text值
可以保持复杂 的对象类型
 -->
 <x-body>
 <user id="user">
 <name>admin</name>
 <age>20</age>
 </user>
 </x-body>

遍历方法:

public class MyXml {
    public static void main(String[] args) {
        // 创建解析器
        SAXReader xSaxReader = new SAXReader();

        // 获取解析文件
        try {
            // 获取根节点
            Document document = xSaxReader.read(new File("src/xml/test.xml"));
            Element rootElement = document.getRootElement();
            System.out.println(rootElement.getName());// 获取根的名称

            // 4.遍历结果
            /*
             * 普通遍历
             */
            Element element = rootElement.element("user");
            System.out.println(element.attributeValue("id"));
            System.out.println(element.attributeValue("class"));

            System.out.println(element.elementText("name"));// 获取user节点的子节点name的text值
            System.out.println(element.elementText("age"));// 获取user节点的子节点name的text值
            // 获取user节点的子节点
            Element element2=element.element("name");
            System.out.println(element2.getName());
            System.out.println(element2.getText());
            
            
            /*
             * 循环遍历
             */
            Iterator<Element> iterator=rootElement.elementIterator();
            while(iterator.hasNext()){
                Element e= iterator.next();
                System.out.println(e.attributeValue("id"));
                System.out.println(e.elementText("name"));
                
            }
            
            /*
             * 节点遍历
             */
            List<Element> list=document.selectNodes("x-body/user");
            for (Element element3 : list) {
                System.out.println(element3.getName());
            }
            
        } catch (DocumentException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

    }
}

 

posted @ 2016-10-14 14:02  HuTiger  阅读(4505)  评论(0)    收藏  举报