DOM4J解析XML

       DOM4JDOM4J出品的一个开源XML解析包。它可以读、写、导航、创建和修改XML文档。DOM4J应用于 Java 平台,采用了 Java 集合框架,并完全支持 DOMSAX JAXP

       使用Dom4j开发,需下载dom4j相应的jar文件。Dom4j的下载网址:http://sourceforge.net/projects/dom4j/files/dom4j/。我选择下载的是dom4j-1.6.1.zip,对其进行解压。在这里可以看到有docs帮助的文件夹,也有我们需要dom4j-1.6.1.jar文件。我们只需要把dom4j-1.6.1.jar文件构建到我们开发的项目中就可以使用dom4j开发了。

      下面我们建立web程序,项目名称为得dom4jTest。这里需要将dom4j-1.6.1.jar拷贝到WEB-INF/lib中。下面是我对一些常用方法的整理:

(1)dom4j创建XML文件       

<span style="font-size:12px;">	/**
	 * dom4j创建xml文件
	 */
	public void createXmlTest(){
		//创建文档的根节点  
        Document document = DocumentHelper.createDocument();  
        //创建文档的根元素结点
        Element root = document.addElement("person");
        document.setRootElement(root);
        //给根节点添加属性
        root.addAttribute("name", "people").addAttribute("id", "highLevel");
        
        //给根节点添加孩子结点
        Element elem1=root.addElement("expression");
        elem1.addElement("name").addAttribute("nameNo", "1").addText("华子");
        elem1.addElement("sex").addText("女");
        
        Element elem2 =root.addElement("expression");
        elem2.addElement("name").addAttribute("nameNo", "2").addText("洋洋");
        elem2.addElement("sex").addText("男");
        
        //把生成的xml文档放在硬盘上  true代表换行
        OutputFormat format = new OutputFormat(" ",true);
        //设置编码格式
        format.setEncoding("UTF-8");
        try {
			XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("person.xml"),format);
			xmlWriter.write(document);
			xmlWriter.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}</span>

(2)dom4j读取xml文件

          /**
	 * dom4j读取xml文件
	 */
	public void readXmlTest(){
		
		File file = new File("src/dom4j/person.xml");  //注意文件的路径,如果报错对象为空,可能就是没有找到文件位置
		SAXReader reader = new SAXReader();		  		
		Document doc;
		try {
			//读取xml文件
			doc = reader.read(file);
			
			//获得根节点元素
			Element root =doc.getRootElement();
		
		    //遍历根节点下的所有子节点元素
			for (Iterator i =root.elementIterator();i.hasNext();) {
				Element element =(Element)i.next();
				//输出每个子节点下的所有属性
				for (Iterator attr = element.attributes().iterator(); attr.hasNext();) {
					Attribute attrElement = (Attribute) attr.next();
					System.out.println("显示: "+attrElement.getName()+":" + attrElement.getValue()); 
				}				
			}
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}

(3)使用dom4j实现对字符串与xml的互相转化

         /**
	 * 利用dom4j将字符串转化为xml
	 */
	public void stringToXmlTest(){
		
		String text = "<person><name>huazi</name><sex>girl</sex></person>";  
		
		try {
		  //将字符串解析为xml
		  Document doc = DocumentHelper.parseText(text);
		 // 获取根节点
          Element rootElt = doc.getRootElement(); 
         // 拿到根节点的名称
          System.out.println("根节点:" + rootElt.getName()); 
          
		} catch (DocumentException e1) {
		  e1.printStackTrace();
		}
	}
	
	/**
	 * 利用dom4j将xml转化为字符串
	 */
	public void xmlToStringTest(){
		
		File file = new File("src/dom4j/person.xml");
		SAXReader reader = new SAXReader();		  		
		
		try {
			
			//读取xml文件
			Document doc = reader.read(file);
			//获取根节点元素
			Element root =doc.getRootElement();
			
			//将XML文件转化为字符串
			String xmlToString = doc.asXML();
			System.out.println(xmlToString);
			
			//根元素标签转换的内容
			String rootXMLText =root.asXML();
			System.out.println(rootXMLText);
			
			//获取子节点元素标签内的内容
			Element e =root.element("子标签元素");
			System.out.println(e.asXML());
			
		} catch (DocumentException e1) {
			  e1.printStackTrace();
		}
	}

(4)结点对象的一些属性和方法的整理

                 //取得某节点下的某属性    
	         Element root=document.getRootElement(); 
			
	       //属性名name   
	        Attribute attribute=root.attribute("id");
	        
	        //取得属性的文字  
	        String text=attribute.getText();  
	        
	        //删除某属性   
	        Attribute attribute=root.attribute("size");  
	        root.remove(attribute); 
	        
	        //遍历某节点的所有属性      
	        Element root=document.getRootElement();         
	        for(Iterator it=root.attributeIterator();it.hasNext();){           
	           Attribute attribute = (Attribute) it.next();            
	           String text=attribute.getText();           
	           System.out.println(text);     
	        } 
	        
	       //设置某节点的属性和文字.    
	        newMemberElm.addAttribute("name", "huazi");  
	        
	       //设置属性的文字  
	        Attribute attribute=root.attribute("name");     
	        attribute.setText("huazi");


       更多相关方法请参照dom4j提供的文档,下面的地址博客链接整理的也很全面,大家可以参考:http://www.cnblogs.com/forlina/archive/2011/06/09/2076534.html




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值