Dom4j读取XML

来源:互联网 发布:邓紫棋的喜欢你 知乎 编辑:程序博客网 时间:2024/06/16 01:47
Demo4j读取xml文档内容
节点
    Iterator    Element.nodeIterator();//获取当前标签节点下的所有子节点
        
标签
    Element    Document.getRootElement();//获取xml文档的根标签
    Element    Element.element("标签名");//获取指定名称的第一个
    Iterator<Element>    Element.elementIterator("标签名");//获取指定名称的所有子标签
    List<Element>    Element.elements();//获取所有直接子标签
    Element Element.elementByID("ID");//获取属性为“ID”的标签。注意这里的“ID”必须为大写
    
属性
    String   Element.attributeValue("属性名") //获取指定名称的属性值
    Attribute    Element.attribute("属性名");//获取指定名称的属性对象    
    Attribute.getName()  //获取属性名称
    Attibute.getValue()  //获取属性值
    List<Attribute>     Element.attributes();  //获取所有属性对象
    Iterator<Attribute>        Element.attibuteIterator(); //获取所有属性对象
文本
    Element.getText();  //获取当前标签的文本
    Element.elementText("子标签名") //获取当前标签的指定名称的子标签的文本内容  

Demo:
package com.dom4j.red;import java.io.File;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;import org.junit.BeforeClass;import org.junit.Test;/*** Author:Liu Zhiyong(QQ:1012421396)* Version:Version_1* Date:* Desc:Demo4j读取xml文档内容节点    Iterator    Element.nodeIterator();//获取当前标签节点下的所有子节点        标签Element    Document.getRootElement();//获取xml文档的根标签    Element    Element.element("标签名");//获取指定名称的第一个    Iterator<Element>    Element.elementIterator("标签名");//获取指定名称的所有子标签    List<Element>    Element.elements();//获取所有直接子标签    属性:String   Element.attributeValue("属性名") //获取指定名称的属性值Attribute    Element.attribute("属性名");//获取指定名称的属性对象Attribute.getName()  //获取属性名称Attibute.getValue()  //获取属性值List<Attribute> Element.attributes();  //获取所有属性对象Iterator<Attribute>Element.attibuteIterator(); //获取所有属性对象文本:Element.getText();  //获取当前标签的文本Element.elementText("标签名") //获取当前标签的指定名称的子标签的文本内容*/public class Demo2 {public static Document doc;@BeforeClasspublic static void getDocument() throws Exception {//获取xml解析对象SAXReader saxReader = new SAXReader();//读取xml文档,获取Document对象doc = saxReader.read(new File("./src/contact.xml"));}//获取节点信息@Testpublic void test1() throws Exception {//得到当前节点下的所有子节点(不包括孙节点及其以下的节点)Iterator<Node> iterator = doc.nodeIterator();while(iterator.hasNext()){//判断是否有下一个元素Node node = iterator.next();//取出元素String name = node.getName();System.out.println(name);//继续取出下面的节点//只有标签节点下才有子节点//判断当前节点是否是标签节点if(node instanceof Element){Element ele = (Element)node;Iterator<Node> iterator2 = ele.nodeIterator();while(iterator2.hasNext()){Node node2 = iterator2.next();String name2 = node2.getName();System.out.println(name2);}}}}/** * 遍历xml文档的所有节点 * @throws Exception */@Testpublic void test2() throws Exception {//获取根标签,xml有且只有一个根标签Element rootEle = doc.getRootElement();getChildNodes(rootEle);}/** * 获取传入标签下的所有子节点 * @param ele */private void getChildNodes(Element ele){System.out.println(ele.getName());//得到子节点Iterator<Node> it = ele.nodeIterator();while(it.hasNext()){Node node = it.next();//判断是否是标签节点if(node instanceof Element){Element ele2 = (Element)node;//递归getChildNodes(ele2);}}}/** * 获取标签 * @throws Exception */@Testpublic void test3() throws Exception {//得到根标签Element rootEle = doc.getRootElement();//得到标签的名称String name = rootEle.getName();System.out.println(name);System.out.println("=============================");//得到当前标签下的第一个指定名称的子标签(不包括孙节点及其以下的节点)Element contactElement = rootEle.element("contact");System.out.println(contactElement.getName());System.out.println("=============================");//得到当前标签下指定名称的所有子标签(不包括孙节点及其以下的节点)Iterator<Element> it = rootEle.elementIterator("contact");while(it.hasNext()){Element ele = it.next();System.out.println(ele.getName());}System.out.println("=============================");//得到当前标签下的所有子标签(不包括孙节点及其以下的节点)List<Element> list = rootEle.elements();for(Element ele : list){System.out.println(ele.getName());}System.out.println("=============================");//获取更深层次的标签(只能一层一层的获取)Element nameEle = doc.getRootElement().element("contact").element("name");System.out.println(nameEle.getName());}/** * 读取属性(先获取属性所在标签对象,然后才能获取属性) * @throws Exception */@Testpublic void test4() throws Exception {//获取属性所在的标签对象Element ele = doc.getRootElement().element("contact");//获取指定属性名称的属性对象Attribute idAtt = ele.attribute("id");System.out.println(idAtt.getName() + ":" + idAtt.getValue());System.out.println("========================");//根据指定名称的属性获取属性值String attValue = ele.attributeValue("id");System.out.println(attValue);System.out.println("========================");//获取所有属性对象List<Attribute> list = ele.attributes();//遍历属性对象集合for(Attribute att : list){System.out.println(att.getName() + ":" + att.getValue());}}/** * 获取文本(先获取标签,再获取文本) * @throws Exception */@Testpublic void test5() throws Exception {/** * 注意:空格和换行也是xml的内容 *///获取根标签下的文本String text = doc.getRootElement().getText();System.out.println(text);System.out.println("========================");//先获取标签Element nameEle = doc.getRootElement().element("contact").element("name");//得到文本String text1 = nameEle.getText();////获取当前标签的文本System.out.println(text1);System.out.println("========================");//获取当前标签的指定名称的子标签的文本内容String text2 = doc.getRootElement().element("contact").elementText("name");System.out.println(text2);}}


0 0