码迷,mamicode.com
首页 > 其他好文 > 详细

XML学习总结(一)

时间:2016-08-14 07:21:51      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

一.HTML和XML的区别之处

HTML HyperTextMarkupLanguage 超文本标记语言,由w3c组织规定,约100多个标签,用于规定网页结构。

 

XML ExtendMarkupLanguage 可扩展标记语言,标签由开发者自定义

作用

-描述带关系的数据,作为软件的配置文件,包含与被包含的关系

例如:使用ip255.43.12.54)地址和端口(1521),连接oracle数据库,保存学生数据。

ip地址端口配置到xml文件:

host.xml

      <host>
	<ip>255.43.12.55</ip>
	<port>1521</port>
      </host>

  

-作为数据的载体,用于存储数据,是一个小型的“数据库”

例如

教师信息管理系统存储教师的信息

teacher.xml
	<teacher>	
	   <name>张三</name>
	   <email>zhangsan@qq.com</email>
	   <workage>2</workage>
       </teacher>

  

二.XML语法

1.标签

1> <eleName></eleName>  标签体内有内容

     </eleName> 标签体内没有内容

2> xml 标签名称区分大小写

3> xml标签一定要正确配对

4> xml标签名中间不能有空格

5> xml标签名不能以数字开头

6> 在一个xml文档中有且仅有一个根标签

2.

   语法 <elemName name="cxspace"></elemName>

   注意事项: 

-属性值必须1以引号包含,不能省略,也不能单双引号混合使用

-一个标签可以有多个属性,单数不能出现重复的属性名

3.注释

<!--注释内容-->

4.文档声明

语法:<?xml version="1.0" encoding="utf-8">

version:xml版本号

encoding:解析xml文件时查询的码表

注意

1)如果在eclipse或者idea工具中开发xml文件,保存xml文件时自动按照文档声明的encoding来保存

2)用记事本工具修改xml文件,注意保存xml文件按照文档声明的encoding的码表来保存

5.转义字符

xml中内置了一些特殊字符,这些字符不能直接被浏览器原样输出。如果希望把这些特殊字符按照原样输出到浏览器,需要对这些特殊字符进行转义

 	特殊字符     转义字符
	 <             <
	 >             >
	 "             "
	 &             &
	 空格          &nsbp;

  

6.CDATA块

可以让一些需要进行包含特殊字符的内容哦给统一原样输出

7.处理指令

告诉xml解析器如何解析xml文档

三.XML解析

DOM解析

DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建出一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问到xml文档中的内容.

Dom4j解析工具解析步骤

1 > 导入  dom4j-1.6.1.jar 核心包

2 > 编写Dom4j读取xml文件代码

public static void main(String[] args) {
		try {
			//1.创建一个xml解析器对象
			SAXReader reader = new SAXReader();
			//2.读取xml文档,返回Document对象
			Document doc = reader.read(new File("./src/student.xml"));
			
			System.out.println(doc);
		} catch (DocumentException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
		
	}

上述代码可以读取src下的student.xml进内存,返回文档树对象.

Dom4j包中读取xml文件内容的API

节点:

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("标签名") //获取当前标签的指定名称的子标签的文本内容

实例代码

contact.xml

<?xml version="1.0" encoding="utf-8"?>
<contactList>
	<contact id="001">
		<name>张三</name>
		<age>20</age>
		<phone>134222223333</phone>
		<email>zhangsan@qq.com</email>
		<qq>432221111</qq>
	</contact>
	<contact id="002">
		<name>李四</name>
		<age>20</age>
		<phone>134222225555</phone>
		<email>lisi@qq.com</email>
		<qq>432222222</qq>
	</contact>
</contactList>                              

entity实体类

package gz.itcast.a_dom4j_read;

public class Contact {
	private String id;
	private String name;
	private String age;
	private String phone;
	private String email;
	private String qq;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getQq() {
		return qq;
	}
	public void setQq(String qq) {
		this.qq = qq;
	}
	@Override
	public String toString() {
		return "Contact [age=" + age + ", email=" + email + ", id=" + id
				+ ", name=" + name + ", phone=" + phone + ", qq=" + qq + "]";
	}
	
}

调用api的demo

package gz.itcast.a_dom4j_read;

import java.io.File;

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

/**
 * 第一个Dom4j读取xml文档的例子
 * @author APPle
 *
 */
public class Demo1 {

	
	public static void main(String[] args) {
		try {
			//1.创建一个xml解析器对象
			SAXReader reader = new SAXReader();
			//2.读取xml文档,返回Document对象
			Document doc = reader.read(new File("./src/contact.xml"));
			
			System.out.println(doc);
		} catch (DocumentException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
		
	}

}

  

package gz.itcast.a_dom4j_read;

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.Test;

/**
 * 第二个dom4j读取xml文件内容
 * 节点
 * 标签
 * 属性
 * 文本
 * @author APPle
 *
 */
public class Demo2 {
	
	/**
	 * 得到节点信息
	 */
	@Test
	public void test1() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact.xml"));
		
		//2.nodeIterator: 得到当前节点下的所有子节点对象(不包含孙以下的节点)
		Iterator<Node> it = doc.nodeIterator();
		while(it.hasNext()){//判断是否有下一个元素
			Node node = it.next();//取出元素
			String name = node.getName();//得到节点名称
			//System.out.println(name);
			
			//System.out.println(node.getClass());
			//继续取出其下面的子节点
			//只有标签节点才有子节点
			//判断当前节点是否是标签节点
			if(node instanceof Element){
				Element elem = (Element)node;
				Iterator<Node> it2 = elem.nodeIterator();
				while(it2.hasNext()){
					Node n2 = it2.next();
					System.out.println(n2.getName());
				}
			}
		}
	}
	
	/**
	 * 遍历xml文档的所有节点
	 * @throws Exception
	 */
	@Test
	public void test2() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact.xml"));
		
		//得到根标签
		Element rooElem = doc.getRootElement();
		
		getChildNodes(rooElem);

	}
	
	/**
	 * 获取 传入的标签下的所有子节点
	 * @param elem
	 */
	private void getChildNodes(Element elem){
		System.out.println(elem.getName());
		
		//得到子节点
		Iterator<Node> it = elem.nodeIterator();
		while(it.hasNext()){
			Node node = it.next();
			
			//1.判断是否是标签节点
			if(node instanceof Element){
				Element el = (Element)node;
				//递归
				getChildNodes(el);
			}
		};
	}
	
	/**
	 * 获取标签
	 */
	@Test
	public void test3() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact.xml"));
		
		//2.得到根标签
		Element  rootElem = doc.getRootElement();
		//得到标签名称
		String name = rootElem.getName();
		System.out.println(name);
		
		//3.得到当前标签下指定名称的第一个子标签
		/*
		Element contactElem = rootElem.element("contact");
		System.out.println(contactElem.getName());
		*/
		
		//4.得到当前标签下指定名称的所有子标签
		/*
		Iterator<Element> it = rootElem.elementIterator("contact");
		while(it.hasNext()){
			Element elem = it.next();
			System.out.println(elem.getName());
		}
		*/
		
		//5.得到当前标签下的的所有子标签
		List<Element> list = rootElem.elements();
		//遍历List的方法
		//1)传统for循环  2)增强for循环 3)迭代器
		/*for(int i=0;i<list.size();i++){
			Element e = list.get(i);
			System.out.println(e.getName());
		}*/
		
	/*	for(Element e:list){
			System.out.println(e.getName());
		}*/
		/*
		Iterator<Element> it = list.iterator(); //ctrl+2 松开 l
		while(it.hasNext()){
			Element elem = it.next();
			System.out.println(elem.getName());
		}*/
		
		//获取更深层次的标签(方法只能一层层地获取)
		Element nameElem = doc.getRootElement().
					element("contact").element("name");
		System.out.println(nameElem.getName());
		
	}
	
	/**
	 * 获取属性
	 */
	@Test
	public void test4() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact.xml"));
		
		//获取属性:(先获的属性所在的标签对象,然后才能获取属性)
		//1.得到标签对象
		Element contactElem = doc.getRootElement().element("contact");
		//2.得到属性
		//2.1  得到指定名称的属性值
		/*
		String idValue = contactElem.attributeValue("id");
		System.out.println(idValue);
		*/
		
		//2.2 得到指定属性名称的属性对象
		/*Attribute idAttr = contactElem.attribute("id");
		//getName: 属性名称    getValue:属性值
		System.out.println(idAttr.getName() +"=" + idAttr.getValue());*/
		
		//2.3 得到所有属性对象,返回LIst集合
		/*List<Attribute> list = contactElem.attributes();
		//遍历属性
		for (Attribute attr : list) {
			System.out.println(attr.getName()+"="+attr.getValue());
		}*/
		
		//2.4 得到所有属性对象,返回迭代器
		Iterator<Attribute> it = contactElem.attributeIterator();
		while(it.hasNext()){
			Attribute attr = it.next();
			System.out.println(attr.getName()+"="+attr.getValue());
		}
		
	}
	
	/**
	 * 获取文本
	 */
	@Test
	public void test5() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
					
		Document doc = reader.read(new File("./src/contact.xml"));
		
		
		/**
		 * 注意: 空格和换行也是xml的内容
		 */
		String content = doc.getRootElement().getText();
		System.out.println(content);
		
		
		//获取文本(先获取标签,再获取标签上的文本)
		Element nameELem = 
			doc.getRootElement().element("contact").element("name");
		//1. 得到文本
		String text = nameELem.getText();
		System.out.println(text);
		
		//2. 得到指定子标签名的文本内容
		String text2 = 
			doc.getRootElement().element("contact").elementText("phone");
		System.out.println(text2);
		
	}
	
	
}

  

迭代遍历

package gz.itcast.a_dom4j_read;

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.Text;
import org.dom4j.io.SAXReader;
import org.junit.Test;
/**
 * 练习-完整读取xml文档内容
 * @author APPle
 *
 */
public class Demo3 {

	@Test
	public void test() throws Exception{
		//读取xml文档
		SAXReader reader = new SAXReader();
		Document doc = 
				reader.read(new File("./src/contact.xml"));
		
		//读取根标签
		Element rootELem = doc.getRootElement();
		
		StringBuffer sb = new StringBuffer();
		
		getChildNodes(rootELem,sb);
		
		System.out.println(sb.toString());
		
	}
	
	/**
	 * 获取当前标签的所有子标签
	 */
	private void getChildNodes(Element elem,StringBuffer sb){
		//System.out.println(elem.getName());
		
		//开始标签
		sb.append("<"+elem.getName());
		
		//得到标签的属性列表
		List<Attribute> attrs = elem.attributes();
		if(attrs!=null){
			for (Attribute attr : attrs) {
				//System.out.println(attr.getName()+"="+attr.getValue());
				sb.append(" "+attr.getName()+"=\""+attr.getValue()+"\"");
			}
		}
		sb.append(">");
		
		//得到文本
		//String content = elem.getText();
		//System.out.println(content);
		Iterator<Node> it = elem.nodeIterator();
		while(it.hasNext()){
			Node node = it.next();
			
			//标签
			if(node instanceof Element){
				Element el = (Element)node;
				getChildNodes(el,sb);
			}
			
			//文本
			if(node instanceof Text){
				Text text = (Text)node;
				sb.append(text.getText());
			}
		}
		
		//结束标签
		sb.append("</"+elem.getName()+">");
		
		
		
		
	}
}

 知识点list集合使用,list集合遍历

package gz.itcast.a_dom4j_read;

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

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

/**
 * 把xml文档信息封装到对象中
 * @author APPle
 *
 */
public class Demo4 {

		public static void main(String[] args) throws Exception{
			List<Contact> list = new ArrayList<Contact>();
			
			//读取xml,封装对象
			SAXReader reader = new SAXReader();
			Document doc = reader.read(new File("./src/contact.xml"));
			//读取contact标签
			Iterator<Element> it = doc.getRootElement().elementIterator("contact");
			while(it.hasNext()){
				Element elem = it.next();
				//创建Contact
				Contact contact = new Contact();
				contact.setId(elem.attributeValue("id"));
				contact.setName(elem.elementText("name"));
				contact.setAge(elem.elementText("age"));
				contact.setPhone(elem.elementText("phone"));
				contact.setEmail(elem.elementText("email"));
				contact.setQq(elem.elementText("qq"));
				list.add(contact);
			}
			
			for (Contact contact : list) {
				System.out.println(contact);
			}
			
			
		}
}

  

Dom4j中修改xml文档的api

 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)

 wirter.write(Document);

 修改xml文档的API

    增加:

       DocumentHelper.createDocument()  增加文档

       addElement("名称")  增加标签

       addAttribute("名称",“值”)  增加属性

    修改:

       Attribute.setValue("值")  修改属性值

       Element.addAtribute("同名的属性名","值")  修改同名的属性值

       Element.setText("内容")  修改文本内容

    删除

       Element.detach();  删除标签 

       Attribute.detach();  删除属性

实例demo

package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * 第一个写出内容到xml文档
 * @author APPle
 *
 */
public class Demo1 {
	
	public static void main(String[] args) throws Exception{
		//一、读取或创建一个Document对象
		//读取day07项目的xm文件
		Document doc = new SAXReader().read(new File("./src/contact.xml"));
		
		
		//二、修改Document对象内容
		
		
		//三、把修改后的Document对象写出到xml文档中
		//指定文件输出的位置
		FileOutputStream out = new FileOutputStream("e:/contact.xml");
		//1.创建写出对象
		XMLWriter writer = new XMLWriter(out);
		
		//2.写出对象
		writer.write(doc);
		//3.关闭流
		writer.close();
	}

}

  

package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * 讨论写出内容到xml文档的细节
 * @author APPle
 *
 */
public class Demo2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		Document doc = new SAXReader().read(new File("./src/contact.xml"));
		//指定文件输出的位置
		FileOutputStream out = new FileOutputStream("e:/contact.xml");
		/**
		 * 1.指定写出的格式
		 */
		OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
		//OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
		/**
		 * 2.指定生成的xml文档的编码
		 *    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)
		 *    结论: 使用该方法生成的xml文档避免中文乱码问题。
		 */
		format.setEncoding("utf-8");
		
		
		//1.创建写出对象
		XMLWriter writer = new XMLWriter(out,format);
		
		//2.写出对象
		writer.write(doc);
		//3.关闭流
		writer.close();
	}

}

 

package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

/**
 * 修改xml内容
 * 增加:文档,标签 ,属性
 * 修改:属性值,文本
 * 删除:标签,属性
 * @author APPle
 *
 */
public class Demo3 {

	/**
	 * 增加:文档,标签 ,属性
	 */
	@Test
	public void test1() throws Exception{
		/**
		 * 1.创建文档
		 */
		Document doc = DocumentHelper.createDocument();
		/**
		 * 2.增加标签
		 */
		Element rootElem = doc.addElement("contactList");
		//doc.addElement("contactList");
		Element contactElem = rootElem.addElement("contact");
		contactElem.addElement("name");
		/**
		 * 3.增加属性
		 */
		contactElem.addAttribute("id", "001");
		contactElem.addAttribute("name", "eric");
		
		//把修改后的Document对象写出到xml文档中
		FileOutputStream out = new FileOutputStream("e:/contact.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		writer.write(doc);
		writer.close();
	}
	
	/**
	 * 修改:属性值,文本
	 * @throws Exception
	 */
	@Test
	public void test2()	throws Exception{
		Document doc = new SAXReader().read(new File("./src/contact.xml"));
		
		/**
		 * 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值
		 */
		//1.1  得到标签对象
		/*
		Element contactElem = doc.getRootElement().element("contact");
		//1.2 得到属性对象
		Attribute idAttr = contactElem.attribute("id");
		//1.3 修改属性值
		idAttr.setValue("003");
		*/
		/**
		 * 方案二: 修改属性值
		 */
		//1.1  得到标签对象
		/*
		Element contactElem = doc.getRootElement().element("contact");
		//1.2 通过增加同名属性的方法,修改属性值
		contactElem.addAttribute("id", "004");
		*/
		
		/**
		 * 修改文本 1.得到标签对象 2.修改文本
		 */
		Element nameElem = doc.getRootElement().
			element("contact").element("name");
		nameElem.setText("李四");
		
		
		
		FileOutputStream out = new FileOutputStream("e:/contact.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		writer.write(doc);
		writer.close();
	}
	
	
	/**
	 * 删除:标签,属性
	 * @throws Exception
	 */
	@Test
	public void test3() throws Exception{
		Document doc = new SAXReader().read(new File("./src/contact.xml"));
		
		/**
		 * 1.删除标签     1.1 得到标签对象  1.2 删除标签对象    
		 */
		// 1.1 得到标签对象
		/*
		Element ageElem = doc.getRootElement().element("contact")
					.element("age");
		
		//1.2 删除标签对象
		ageElem.detach();
		//ageElem.getParent().remove(ageElem);
		*/
		/**
		 * 2.删除属性   2.1得到属性对象  2.2 删除属性
		 */
		//2.1得到属性对象
		//得到第二个contact标签
		Element contactElem = (Element)doc.getRootElement().
			elements().get(1);
		//2.2 得到属性对象
		Attribute idAttr = contactElem.attribute("id");
		//2.3 删除属性
		idAttr.detach();
		//idAttr.getParent().remove(idAttr);
		
		FileOutputStream out = new FileOutputStream("e:/contact.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		writer.write(doc);
		writer.close();
	}
}

  

package gz.itcast.a_dom4j_write;

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

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

/**
 *  课堂练习: 
 * 1.使用dom4j的api来生成以下的xml文件
<Students>
<Student id="1">
	<name>张三</name>
	<gender>男</gender>
	<grade>计算机1班</grade>
	<address>广州天河</address>
</Student>
<Student id="2">
	<name>李四</name>
	<gender>女</gender>
	<grade>计算机2班</grade>
	<address>广州越秀</address>
</Student>
</Students>

2.修改id为2的学生的姓名,改为“王丽”

3.删除id为2的学生
 * @author APPle
 *
 */
public class Demo4 {

	/**
	 * 1.生成指定xml文档
	 * @throws Exception
	 */
	@Test
	public void test1() throws Exception{
		//1.内存创建xml文档
		Document doc = DocumentHelper.createDocument();
		
		//2.写入内容
		Element rootElem = doc.addElement("Students");
		
		//2.1 增加标签
		Element studentElem1 = rootElem.addElement("Student");
		//2.2 增加属性
		studentElem1.addAttribute("id", "1");
		//2.3 增加标签,同时设置文本
		studentElem1.addElement("name").setText("张三");
		studentElem1.addElement("gender").setText("男");
		studentElem1.addElement("grade").setText("计算机1班");
		studentElem1.addElement("address").setText("广州天河");
		
		//2.1 增加标签
		Element studentElem2 = rootElem.addElement("Student");
		//2.2 增加属性
		studentElem2.addAttribute("id", "2");
		//2.3 增加标签,同时设置文本
		studentElem2.addElement("name").setText("李四");
		studentElem2.addElement("gender").setText("女");
		studentElem2.addElement("grade").setText("计算机2班");
		studentElem2.addElement("address").setText("广州越秀");
		
		
		//3.内容写出到xml文件
		//3.1 输出位置
		FileOutputStream out = new FileOutputStream("e:/student.xml");
		//3.2 指定格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置编码
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		//3.3 写出内容
		writer.write(doc);
		//3.4关闭资源
		writer.close();
		
	}
	
	/**
	 * 2.修改id为2的学生姓名
	 * @throws Exception
	 */
	@Test
	public void test2() throws Exception{
		//1.查询到id为2的学生
		Document doc = new SAXReader().read(new File("e:/student.xml"));
		//1.1 找到所有的Student标签
		Iterator<Element> it = doc.getRootElement().elementIterator("Student");
		while(it.hasNext()){
			Element stuElem = it.next();
			//1.2 查询id为id的学生标签
			if(stuElem.attributeValue("id").equals("2")){
				stuElem.element("name").setText("王丽");
				break;
			}
		}
	
		
		//3.1 输出位置
		FileOutputStream out = new FileOutputStream("e:/student.xml");
		//3.2 指定格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置编码
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		//3.3 写出内容
		writer.write(doc);
		//3.4关闭资源
		writer.close();
	}
	
	/**
	 * 3.删除id为2的学生
	 * @throws Exception
	 */
	@Test
	public void test3() throws Exception{
		//1.查询到id为2的学生
		Document doc = new SAXReader().read(new File("e:/student.xml"));
		//1.1 找到所有的Student标签
		Iterator<Element> it = doc.getRootElement().elementIterator("Student");
		while(it.hasNext()){
			Element stuElem = it.next();
			//1.2 查询id为id的学生标签
			if(stuElem.attributeValue("id").equals("2")){
				//1.3 删除该学生标签
				stuElem.detach();
				break;
			}
		}
	
		
		//3.1 输出位置
		FileOutputStream out = new FileOutputStream("e:/student.xml");
		//3.2 指定格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置编码
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		//3.3 写出内容
		writer.write(doc);
		//3.4关闭资源
		writer.close();
	}
}

  

XML学习总结(一)

标签:

原文地址:http://www.cnblogs.com/cxspace/p/5768392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!