• JDOM解析XML


        XML(eXtensibleMarkupLanguage)——可扩展标记语言,用户能够自定义语言标记。仅仅须要有开启和关闭标签就可以。

        在开发过程中,开发者每天都在使用XML文件。可是怎样操作读取这些文件呢?相关的技术有非常多,比如传统的Dom、SAX和后来的JDOM、Dom4j等。 事实上最先接触到的还是Dom4j,可是后来在学习中发现了JDOM,相比之下这两者还是挺相似的。

    以下就简介一下JDOM。


        JDOM主要是利用纯java技术对XML文档实现解析、生成、序列化以及多种操作的一个API函数。在 JDOM 中。XML 元素就是 Element 的实例。XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。  以下是详细的操作:

        首先须要准备jdom相关的jar包

        jdom-jar下载地址:http://www.jdom.org/dist/binary/

        其次须要引入相关jar包,这里我用的是jdom-1.1.3



    一、使用JDOM方式创建XML文件

    public class CreateXMLByJDOM {
    	public static void main(String[] args ){
    		//创建Document实例
    		Document document = new Document();
    		//创建根元素ContactList,并创建属性
    		Element root = new Element("ContactList").setAttribute(new Attribute("Company","Acompany"));
    		//根元素加入到Document对象中
    		document.addContent(root);
    		//创建元素LinkMan
    		Element contactPerson = new Element("LinkMan");
    		//加入元素到根元素中
    		root.addContent(contactPerson);
    		//创建子元素
    		contactPerson.addContent(new Element("name").setText("雨落天涯"))
    					 .addContent(new Element("company").setText("创宇集团"))
    					 .addContent(new Element("Telphone").setText("13745628456"))
    					 .addContent(new Element("Address")
    					 			.addContent(new Element("Street").setText("朝阳街"))
    							 	.addContent(new Element("City").setText("北京市")));
    							 	
    	//使用XMLOutputter生产xml文档
    		XMLOutputter xmlOut = new XMLOutputter();
    		
    		try{
    			//调用XMLOutputter对象的output方法生成xml文档 
    			xmlOut.output(document,new FileOutputStream("contact.xml"));
    			System.out.println("Writing XML successed!");			
    		}catch(FileNotFoundException e){
    			e.printStackTrace();
    		}catch(IOException e){
    			e.printStackTrace();
    		}
    	}
    }
    
    		


        生成 的XML文件 :


    二、使用JDOM方式读取XML文件

        先创建sample.xml文件


    读取XML文件例如以下:

    public class Sample {
    	public static void main(String[] args) throws Exception {
    		//创建一个SAXBuilder对象 
    		SAXBuilder sb = new SAXBuilder();  
    		//把整个文档当成一个对象
    		Document doc = sb.build(Sample2.class.getClassLoader().getResource("sample.xml")); 
    		 //root拿到这个文档的根对象
    		Element root = doc.getRootElement(); 
    		
    		System.out.println(root);
    		
    		//拿到根对象的HD/disk节点
    		List list = XPath.selectNodes(root, "/HD/disk");
    		
    		System.out.println(list.size());
    		
    		////遍历根元素的子元素集合(即遍历list元素)
    		for (int i = 0; i < list.size(); i++) {
    			Element disk_element = (Element) list.get(i);
    			String name = disk_element.getAttributeValue("name");
    			String capacity = ((Text) XPath.selectSingleNode(disk_element,
    					"//disk[@name='" + name + "']/capacity/text()"))
    					.getTextNormalize();
    			String directories = ((Text) XPath.selectSingleNode(disk_element,
    					"//disk[@name='" + name + "']/directories/text()"))
    					.getTextNormalize();
    			String files = ((Text) XPath.selectSingleNode(disk_element,
    					"//disk[@name='" + name + "']/files/text()"))
    					.getTextNormalize();
    			
    			
    			//输出显示XML数据
    			System.out.println("磁盘信息:");
    			System.out.println("分区盘符:" + name);
    			System.out.println("分区容量:" + capacity);
    			System.out.println("文件夹数:" + directories);
    			System.out.println("文件数:" + files);
    			System.out.println("-----------------------------------");
    		}
    	}
    <span style="font-family:FangSong_GB2312;">}</span>


    终于显示结果



    三、JDOM与DOM4j的比較 :


       JDOM与DOM4j都是面向java语言开发的。JDOM是第一个java特定模型,所以在非常多性能上非常明显就比不上后来的DOM4j。比如第一,JDOM仅使用详细类而不使用接口。这在某些方面简化了API,但同一时候限制了灵活性。但DOM4J大量的使用了接口和抽象基本类方法。第二、JDOM自身不包括解析器。通常使用sax2解析器解析和验证输入XML文档。


  • 相关阅读:
    【转载】消息队列使用的四种场景介绍
    Vue项目部署打包
    创建Vue项目vue-cli &#183; Failed to download repo vuejs-templates/webpack: connect ETIMEDOUT
    数据库错误:ORA-12154
    oracle数据库一条sql语句批量插入数据
    Linux time scap
    winscp不能使用root登录
    Linux find ./ -name *.bak | xargs rm -rf
    Linux命令echo 3 > /proc/sys/vm/drop_caches
    redis查看服务器占用端口
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7114769.html
Copyright © 2020-2023  润新知