Java XMLドキュメントの解析(dom 4 j解析)

5495 ワード

1.要素の取得:
	@Test //     user  
	public void readDemo() throws Exception{
		//  DOM
		SAXReader sax = new SAXReader();
		Document dom = sax.read("./xml/user.xml");
		//     
		/**
		 * ELement          :
		 * element(name)//  
		 * elements(name)	//  ,    list
		 * elementIterator()//  ,    Iterator
		 */
		
		Element root = dom.getRootElement();
		Element eUser = root.element("user");
		
		//    
		String id1=eUser.attributeValue("id");
		String id2=eUser.attribute("id").getValue();
		System.out.println("id1:"+id1+" id2:"+id2);
		
		//     
		String name=eUser.element("name").getText();	//  
		String age=eUser.elementText("age");			//  
		System.out.println("name:"+name+" age:"+age);
	}
@Test //    ,    user   
	public void iteratorDemo() throws Exception{
		SAXReader sax=new SAXReader();
		Document dom=sax.read("./xml/user.xml");
		Element root=dom.getRootElement();
		
//		Iterator it = root.elementIterator();		//        
		Iterator it = root.elementIterator("user");		//        
		while(it.hasNext()){
			Element element=it.next();
			String id=element.attributeValue("id");
			String name=element.elementText("name");
			String age=element.elementText("age");
			System.out.println(id+","+name+","+age);
		}
	}
2.ドキュメントの永続化:
@Test //       aa  --   
	public void addDemo() throws Exception{
		Document dom=new SAXReader().read("./xml/user.xml");
		
		Element root=dom.getRootElement();
		// root     aa
		Element aa = root.addElement("aa");
		// aa    
		aa.addAttribute("id", "aa1001");
		// aa     :name
		Element eA_Name = aa.addElement("name");
		eA_Name.setText("aaaaaa");
		// aa     :age
		aa.addElement("age").setText("991");
		
		//   
		//1.dom.write(FileWrite())
//		Writer w=new FileWriter("./xml/user.xml");
//		dom.write(w);		//        
//		w.close();
		
		//2.XMLWriter   writer(dom)
//		FileWriter fw=new FileWriter("./xml/user.xml");
//		XMLWriter w=new XMLWriter(fw);
//		w.write(dom);
//		w.close();
		
		//3.        
		OutputFormat format=OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		//      XMLWriter 
		XMLWriter w=new XMLWriter(new FileWriter("./xml/user.xml"),format);
		w.write(dom);
		w.close();
	}
3.要素を削除:
@Test //              
	public void delDemo() throws Exception{
		Document dom=new SAXReader().read("./xml/user.xml");
		
		Element root=dom.getRootElement();
		
		List list=root.elements();
		Element eLast=list.get(list.size()-1);
		eLast.getParent().remove(eLast);
		
		//   
		XMLWriter w=new XMLWriter(new FileWriter("./xml/user.xml"));
		w.write(dom);
		w.close();
	}
4.要素の変更:
@Test //                  
	public void updateDemo() throws Exception{
		Document dom=new SAXReader().read("./xml/user.xml");
		Element root=dom.getRootElement();
		
		//     
		List list = root.elements();
		Element eLast=list.get(list.size()-1);
		//         
		//           ,     
		eLast.addAttribute("id", "    id");
		Element name = eLast.element("name");
		name.setText("    name");
		
		
		//   
		XMLWriter w=new XMLWriter(new FileWriter("./xml/user.xml"));
		w.write(dom);
		w.close();
		
	}
5.要素を追加:
//        xml  :aa.xml
	@Test
	public void createNewXMLDemo() throws Exception{
		Document dom=DocumentHelper.createDocument();
		Element root=dom.addElement("cities");
		Element e=root.addElement("city");
		e.addAttribute("id", "c1001");
		Element name = e.addElement("name");
		name.setText("  ");
		
		//   
		XMLWriter w=new XMLWriter(new FileWriter("./xml/aa.xml"));
		w.write(dom);
		w.close();
	}
6.xpath
////////////xpath  :        Xpath_simples.pdf
	/**		dom   ,dom4j  
	 * Xpath     :  dom  Node        (    xpath  )      
	 *         
	 * 1)selectNodes(xpathExpression)--List
	 * 2)selectObject(xpathExpression)--Object
	 * 3)selectSingleNode(xpathExpression)--Node
	 * 
	 *       :          Node    ,     Element      
	 * 		      dom       ,           x.selectNodes(xpathExpression)  dom.selectNodes(xpathExpression)    
	 * 											           
	 */
	@Test
	public void xpathDemo() throws Exception{
		Document dom=new SAXReader().read("./xml/user.xml");
		//     name  
//		String xpath="//name";
//		String xpath="//user/name";//    user  name           /
//		String xpath="//user//name";//    user      name   
		String xpath="/users/name";
		
		
		List list = dom.selectNodes(xpath);
		for(Element e:list){
			System.out.println(e.getText());
		}
	}
@Test
	public void xpathDemo2() throws Exception{
		Document dom=new SAXReader().read("./xml/user.xml");
		
//		String xpath="//user[@name][@pwd]";	//      name pwd   user  
		String xpath="//user[@name='dragon'][@pwd='1234']";	//      name "dragon" pwd""   user  
		
		List list = dom.selectNodes(xpath);
		for(Element e:list){
			System.out.println(e.getText());
		}
	}
Xpath_simples.pdfは私のリソースで見つけることができます.