Bootstrap

XML获取标签,属性,文本

获取标签

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 
 *
 *使用dom4j读取xml文档
 *      getRootElement();获取根标签
 *      getName();获取标签名称
 *      element("名称");获取第一个指定名称的子标签
 *      elements("名称");获取指定名称的所有的子标签
 *      elements();获取所有字标签
 *      
 */
public class dom1 {
    public static void main(String[] args) throws Exception {
        //创建XML 解释器对象
        SAXReader reader = new SAXReader();//ctrl+2 快速放手 +L
        //读取xml文件对象
        Document doc=reader.read(new File("./src/stduent.xml"));
        /**
         * 读取标签
         * 
         */
        //1.1读取根标签
        Element rootElem=doc.getRootElement();
        System.out.println(rootElem);
        //1.2获取标签的名称
        System.out.println(rootElem.getName());
        //1.3获取第一个子标签(根据指定的名称获取一个子标签)
        Element conElem= rootElem.element("contact");
        System.out.println(conElem);
        //1.4获取所有的子标签(根据指定的名称获取所有的同名子标签)
        List<Element> elements = rootElem.elements("contact");
        //遍历list
//      //传统for
//      for(int i=0;i<elements.size();i++) {
//          elements.get(i);
//      }
        //for-each
        for(Element e: elements) {
            System.out.println(e);
        }
//      //迭代器
//      Iterator<Element> it=elements.iterator();
//      while(it.hasNext()) {
//          System.out.println(it.next());
//      }
        System.out.println("=============================");
        //1.4获取所有子标签(不指定名称)
        List<Element> eList = rootElem.elements();
        for(Element e: eList) {
            System.out.println(e);
        }
        System.out.println("=============================");
        /**
         * 注意,如果要想拿孙标签,首先需要获取子标签,在从子标签获取孙标签!1
         */
        Element  nameElem= rootElem.element("contact").element("name");
        System.out.println(nameElem);

    }
}

获取属性及值

import java.io.File;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 使用xml文件上的属性信息 
 * 
 *
 */
public class dom2 {
    public static void main(String[] args) throws Exception {
        //创建xml 解释器对象
             SAXReader reader = new SAXReader();
        //获取xml文件对象
             Document document = reader.read(new File("./src/stduent.xml"));
        //读取根标签
             Element rootElement = document.getRootElement();
        /**
         * 读取属性
         * 注意获取属性必须先得到属性所在的标签
         */
            Element conElem = rootElement.element("contact");
            //1.1 在标签上获取属性(根据属性的名称来获取属性值)
             String value=conElem.attributeValue("id");
             System.out.println(value);
             System.out.println("==================================");

        /**
         * 想要获取002
         * 
         */
            List<Element> list = rootElement.elements("contact");
            Element element = list.get(1);
            String value2 = element.attributeValue("id");
            System.out.println(value2);
             System.out.println("==================================");
        /**
         * 1.2根据属性名称获取属性对象 
         */
            Element element2 = rootElement.element("contact");
            //拿到属性对象
            Attribute attribute = element2.attribute("id");
            //通过属性对象获取属性的名字
            String idName=attribute.getName();
            //通过属性对象获取属性的值  
            String value3 = attribute.getValue();
            System.out.println(idName+"="+value3);

            //1.3获取标签的所有属性
            System.out.println("==================================");
            Element element3 = rootElement.element("contact");
            List<Attribute> attributes = element3.attributes();
            for(Attribute attr : attributes) {
                System.out.println(attr.getName()+"="+attr.getValue());
            }
            //1.5获取子孙的名字
            System.out.println("==================================");
             Element element4 = rootElement.element("contact");
             String value4 = element4.attributeValue("phone");
             System.out.println(value4);

    }
}

获取文本

import java.io.File;

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

public class dom3 {
    public static void main(String[] args) throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("./src/stduent.xml"));
        /**
         * 获取文本
         *  注意:获取文本先要获取文本所在的标签对象
         *  在xml文件中,空格和换行会作为xml文件的内容被解析,xml中的空格和换行和java中的空格
         * 和换行是不一样的,java中的空格和换行是没有意义的只是为了美观。但是xml是有意思的
         * 
         */
        //拿到所在标签上的文本内容
        Element element = document.getRootElement().element("contact").element("name");
        String text = element.getText();
        System.out.println(text);
        System.out.println("=====================================");
        //1.2通过父标签获取指定标签的文本内容
        Element element2 = document.getRootElement().element("contact");
        String text2 = element2.elementText("name");
        System.out.println(text2);

        }
}
;