昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

XML:dom4j

student.xml

<?xml version="1.0" encoding="UTF-8" ?>
<students>
    <student id="001">
        <name>ann</name>
        <age>12</age>
    </student>
    <student id="002">
        <name>lilei</name>
        <age>15</age>
    </student>
    <student id="003">
        <name>jim</name>
        <age>18</age>
    </student>
    <student id="004">
        <name>wanson</name>
        <age>20</age>
    </student>
</students>

源码

package com.shanghai.wanson.dom4j_usage;

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

import org.dom4j.*;
import org.dom4j.io.*;

public class Driver {
	/**
	 * 根元素操作处理
	 * @param args
	 * @throws DocumentException
	 */
	public static void main(String[] args) throws DocumentException {
		//1.获取dom4j中读取xml文档的对象。SAXReader
		SAXReader saxReader=new SAXReader();
		File file=new File("student.xml");
		//2.通过该读取对象的read方法,与要操作的xml文档的相关联。获取该文档的document对象。
		Document document=saxReader.read(file);
		//System.out.println(document.asXML());
		/*System.out.println(document.getNodeTypeName());
		System.out.println(document.getNodeType());	*/	
		//3.通过文档对象document,可以获取根元素节点对象。
		Element rootElement=document.getRootElement();
		
		/*System.out.println(rootElement.getNodeTypeName());
		System.out.println(rootElement.getNodeType());*/
		
		/*System.out.println(rootElement.element("student").attribute("id").getNodeTypeName());
		System.out.println(rootElement.element("student").attribute("id").getNodeType());*/
		//4.通过根元素对象就可以文档的内容进行操作。
	//	System.out.println("根元素的名称:\t"+rootElement.getName());
	//	handleElementOperation(document);
	//	shouAllElements(document);
	//	getAllAttribute(document);
	//	handleAddNode(document);
	//	handleRemoveNode(document);
		handleRemoveById(document, "003");
	}
	/**
	 * 单元素结点操作
	 * @param document
	 */
	public static void handleElementOperation(Document document) {
		Element rootElement=document.getRootElement();
		//获取一个学生节点
		Element stuElement=rootElement.element("student");
		//System.out.println(stuElement.getName());
		//获取姓名
		Element nameElement=stuElement.element("name");
		//String name=nameElement.getText();
		System.out.print("学生姓名:"+nameElement.getName()+"="+nameElement.getText());
		//获取年龄
		Element ageElement=stuElement.element("age");
		String age=ageElement.getText();
		System.out.print("学生年龄:"+ageElement.getName()+"="+age);	
	}
	/**
	 * 获取所有学生信息(姓名,年龄)元素 
	 * @param document
	 */
	public static void shouAllElements(Document document) {
		Element rootElement=document.getRootElement();
		List<Element> eList=rootElement.elements();		
		for (int i = 0; i < eList.size(); i++) {
			Element studentElement=eList.get(i);	
			
			/*System.out.println(studentElement.getName());
			System.out.println(studentElement.getNodeTypeName());
			System.out.println(studentElement.getNodeType());*/
			//方法1
			/*System.out.println("姓名:\t"+studentElement.getText()+studentElement.element("name").getText());
			System.out.println("年龄:\t"+studentElement.getText()+studentElement.element("age").getText());*/
			//方法2
			System.out.println("姓名:\t"+studentElement.elementText("name"));
			System.out.println("年龄:\t"+studentElement.elementText("age"));
		}		
	}
	/**
	 * 获取属性
	 */
	public static void getAllAttribute(Document document) {
		Element rootElement=document.getRootElement();
		Iterator<Element> iterator=rootElement.elementIterator("student");
		while (iterator.hasNext()) {
			Element studentElement = (Element) iterator.next();
			/*
			 * Document:用于描述XML文档。
				Element:用于描述XML文档中的元素。
				Attribute:用于描述XML文档中的元素的属性。
			 */
			//方法1
			
			/*Attribute idAttribute=studentElement.attribute(0);
			System.out.println(idAttribute.getName()+"="+idAttribute.getValue());*/
			
			//方法2
			System.out.println(studentElement.attributeValue("id"));
		}
	}
	/**
	 * 添加一个学生节点
	 * @param document
	 */
	public static void handleAddNode(Document document) {
		Element rootElement=document.getRootElement();
		Element studentElement=rootElement.addElement("student");
		//方法1
		/*studentElement=studentElement.addAttribute("id","005");
		Element nameElement=studentElement.addElement("name");
		System.out.println(nameElement.getName());
		nameElement.addText("work");*/
		//方法2
		studentElement.addAttribute("id", "006").addElement("name").addText("jim");
		studentElement.addElement("age").addText("23");
		System.out.println(document.asXML());
	}
	/**
	 * 移除节点
	 * @param document
	 */
	public static void handleRemoveNode(Document document) {
		Element rootElement=document.getRootElement();
		Element studentElement=rootElement.elements("student").get(3);
		/*System.out.println(studentElement.elementText("name"));
		System.out.println(studentElement.elementText("age"));*/
		//方法1
		/*Attribute idAttribute=studentElement.attribute("id");
		Element nameElement=studentElement.element("name");
		Element ageElement=studentElement.element("age");
		
		studentElement.remove(idAttribute);//删除id
		studentElement.remove(nameElement);//删除姓名
		studentElement.remove(ageElement);//删除年龄
	*/
		//方法2
		rootElement.remove(studentElement);
		
		
		System.out.println(document.asXML());
	}
	/**
	 * 通过id删除节点
	 * @param document
	 */
	public static void handleRemoveById(Document document,String id) {
		Element rootElement=document.getRootElement();
		List<Element> list=rootElement.elements("student");
		boolean flag=false;//默认id不存在
		for(Element element:list) {
			if(element.attribute("id").getValue().equals(id)) {
				flag=true;//id 存在
				rootElement.remove(element);
				break;
			}
		}
		if(!flag) {
			System.out.println("你id 不存在!!");
		}else {
			System.out.println(document.asXML());
		}
		
		
	}
	
}

posted on 2018-08-01 13:50  Indian_Mysore  阅读(99)  评论(0编辑  收藏  举报

导航