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
* 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;
@BeforeClass
public static void getDocument() throws Exception {
//获取xml解析对象
SAXReader saxReader = new SAXReader();
//读取xml文档,获取Document对象
doc = saxReader.read(new File("./src/contact.xml"));
}

//获取节点信息
@Test
public 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
*/
@Test
public 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
*/
@Test
public 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
*/
@Test
public 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
*/
@Test
public 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);
}
}