利用JDOM解析xml步骤实例分析

利用JDOM解析xml步骤实例分析,如有不懂,请参照jdomAPI对照理解,下面是jdomAPI网上参考地址:

http://www.jdom.org/docs/apidocs/


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

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class Test5 {
	/**
	 * jdk提供的sax和dom都有明显的缺点
	 * 第三方提供了对xml处理的jar包-jdom,dom4j...
	 * 
	 * jdom:开源免费,综合了sax和dom的优点,以dom的方式解析数据,并消耗的内存不大。
	 * xml的操作
	 * 1)读取xml数据-到程序
	 * 	a)创建SAXBuilder解析器对象
	 * 		-》new SAXBuilder()
	 *  b)通过解析器对象build进行解析xml-》得到document对象
	 *  	-》Document	build(java.io.File file)
	 *  c)通过document对象去xml中找对应需要的数据
	 * 		-》注意jdom没有使用jdk的dom的api
	 * (document和element。。都是自己定义的)
	 * 		1)doc找根标记
	 * 			getRootElement()
	 *      2)ele找所有子标记
	 *      	getChildren()
	 * 		3)ele找指定名字的子标记
	 * 			getChild(java.lang.String cname)
	 * 		4)ele找指定属性名的值
	 * 			getAttributeValue(java.lang.String attname)
	 * 		5)ele找文本内容
	 * 			getText()
	 * 
	 * 2)把程序的数据-写到xml中
	 * 	a)把数据存储到document对象中
	 *  b)把document对象数据写到xml中
	 *  例子:
	 *  	2个用户
	 *  刘德华	18		布鲁明顿
	 *  蔡依林	20		春熙路
	 *  --》xml存储的方式
	 *  <users>
	 *  	<user name="刘德华" age="18">
	 *  	布鲁明顿
	 *  	</user>
	 *  	<user name="蔡依林" age="20">
	 *  	春熙路
	 *  	</user>
	 *  </users>
	 *  
	 *  a)把数据存储到document对象中
	 *  	1)创建document对象
	 *      2)创建users的element对象
	 *      3)把users设置为document的根标签
	 *      4)创建两个user标签设置属性和文本内容
	 *      5)把user加入到users标签里
	 *  
	 *  b)把document对象数据写到xml中
	 *  
	 *      1)创建xml输出器xmlOutputer对象
	 *      --》new XMLOutputter()
	 *      2)利用输出器的输出功能
	 *      --》 output
	 *      
	 * 
	 * 3)更新xml的数据
	 *   a)读取xml的数据到document对象
	 *   b)修改document对象的数据
	 *   c)把document对象数据输出的xml
	 * 
	 */
	public static void main(String[] args)throws Exception {
		createXml();
		parserXml();
	}
	private static void createXml() throws Exception{
//		a)把数据存储到document对象中
//		   	1)创建document对象
			Document doc=new Document();
//		    2)创建users的element对象
			Element users=new Element("users");
//		    3)把users设置为document的根标签
			doc.setRootElement(users);
//		    4)创建两个user标签设置属性和文本内容
			Element user1=new Element("user");
			user1.setAttribute("name", "刘德华");
			user1.setAttribute("age", "18");
			user1.setText("布鲁明顿");
			Element user2=new Element("user");
			user2.setAttribute("name", "蔡依林");
			user2.setAttribute("age", "20");
			user2.setText("春熙路");
//		    5)把user加入到users标签里
			users.addContent(user1);
			users.addContent(user2);
//		 b)把document对象数据写到xml中
			//xml漂亮的格式化对象
			Format format=Format.getPrettyFormat();
//			 1)创建xml输出器xmlOutputer对象
			XMLOutputter out= new XMLOutputter(format);
//			 2)利用输出器的输出功能
			out.output(doc, new FileOutputStream("src/xml/test5.xml"));
			System.out.println("输出xml完成");
	}
	private static void parserXml() throws Exception{
//		a)创建SAXBuilder解析器对象
		SAXBuilder sb=new SAXBuilder();
//		b)通过解析器对象build进行解析xml-》得到document对象
		Document t3doc=  sb.build(new File("src/xml/test3.xml"));
		
		//c)通过docment取出根标记(users)Elment对象
		Element users= t3doc.getRootElement();
		/**
		 * 通过users取出xml中
		 * 年龄>24的所有名字和地址数据打印到控制台
		 */
		//通过跟标记users找到所有子标记user
		List<Element> listUser= users.getChildren();
		System.out.println("子节点数量:"+listUser.size());
		//遍历 listUser所有的user找到年龄>24
		for (Element user : listUser) {
			//找到年龄
			int age= user.getAttribute("age").getIntValue();
			//年龄>24才取数据
			if(age>24){
				String name=user.getAttributeValue("name");
				String addr=user.getTextTrim();
				System.out.println("名字:"+name+" 地址:"+addr);
			}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值