java xml配置文件


 

XML

類似於properties的配置文件,全名是Extensible Markup Language,意思是可擴展的標記語言。XML語法上和HTML比較相似,但HTML中的元素是固定的,而XML的標簽是可以由用戶自定義的

語法:文檔聲明必須以<?xml開頭,以?>結尾

文檔是聲明必須是0行0列

 

3.文檔聲明只有屬性:

 

a) versioin:指定XML文檔版本。必須屬性,因為我們不會選擇1.1,只會選擇1.0;

 

b) encoding:指定當前文檔的編碼。可選屬性,默認值是。utf-8

xml有2種規范,一種DTD,一種是Schema

DTD:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">  //把DTD規范放到同一個包下,然后把這句話放到自己的xml文件里,標簽必須是成對的
 3 <web-app>
 4     <servlet>
 5         <servlet-name>MyServer</servlet-name>
 6         <servlet-class>com.oracle.demo03.person</servlet-class>  這里寫要操作類的路徑
 7     </servlet>    
 8     <servlet-mapping>
 9         <servlet-name>MyServer</servlet-name>
10         <url-pattern>/hello</url-pattern>
11     </servlet-mapping> 
12 </web-app>

Scheam比DTD更強大,文件的擴展名是xsd,支持命名空間

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://www.example.org/web-app_2_5" 
 3             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4             xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
 5             version="2.5">
 6     <servlet>
 7         <servlet-name></servlet-name>
 8         <servlet-class></servlet-class>
 9     </servlet>            
10     <servlet-mapping>
11         <servlet-name></servlet-name>
12         <url-pattern></url-pattern>
13     </servlet-mapping>
14 </web-app>

用法和DTD差不多

XML解析

1.通過解析器把xml文件裝到內存里,成為ocmenent對象來獲取元素,優點是元素元素之間有關系,可以增刪改查,缺點如果xml文件過大,可能是會內存溢出

2.SAX是一種速度更快,更有效的方法。它逐行掃描文檔,一邊掃描一邊解析。並以事件 驅動的方式進行具體解析,每執行一行,都將觸發對應的事件。

3.PULL:  Android內置的XML解析方式

 

常見的解析開發包:

 

n JAXP: sun公司提供支持DOMSAX開發包

 

n JDom:dom4j兄弟

 

n jsoup:一種處理HTML特定解析開發包

 

n dom4j:比較常用的解析開發包,hibernate底層采用。,在這里我們用deom4j

解析:

dom4j的常用方法:

直接來練習題操作嗎,定義一個接口,再來個接口的實現類,然后寫個xml文件,然后通過xml文件來調用該接口實現類的方法

1 package com.oracle.demo04;
2 
3 public interface Person {     //接口
4     public void a();
5     public void b();
6     public void c();
7 }
 1 package com.oracle.demo04;
 2 
 3 public class PersonS  implements Person{
 4         //接口實現類
 5     @Override
 6     public void a() {
 7         System.out.println("出生");
 8         
 9     }
10 
11     @Override
12     public void b() {
13         System.out.println("青年");
14         
15     }
16 
17     @Override
18     public void c() {
19         System.out.println("愛你到老");
20         
21     }
22 }
23         
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://www.example.org/web-app_2_5" 
 3             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4             xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
 5             version="2.5">
 6     <servlet>
 7         <servlet-name>MyServer</servlet-name>
 8         <servlet-class>com.oracle.demo04.PersonS</servlet-class>  這里寫要讀取實現類的路徑
 9     </servlet>            
10     <servlet-mapping>
11         <servlet-name>MyServer</servlet-name>
12         <url-pattern>/hello</url-pattern>
13     </servlet-mapping>
14 </web-app>
 1 package com.oracle.demo04;
 2 
 3 import java.lang.reflect.Method;
 4 
 5 import org.dom4j.Document;
 6 import org.dom4j.DocumentException;
 7 import org.dom4j.Element;
 8 import org.dom4j.io.SAXReader;
 9 
10 public class Test {
11 
12     public static void main(String[] args) throws Exception {
13         //創建解析器
14         SAXReader sa = new SAXReader();
15         //此處寫要讀取xml文件的路徑
16         Document doc = sa.read("src/com/oracle/demo04/WebDtd.xml");  寫要讀取的xml文件路徑
17         //獲取根元素<web-app>
18         Element el = doc.getRootElement();
19         //獲取根元素下的指定的子元素
20         Element em = el.element("servlet");
21         //獲取server下的子元素
22         String servletclass  = em.elementText("servlet-class");
23         //獲取后再根據獲取到的xml元素來獲取字節碼對象
24         Class c = Class.forName(servletclass);
25         //創建一個對象,然后通過字節碼對象來過去該類的方法
26         Object obj = c.newInstance();
27         Method a = c.getMethod("a");
28         Method b = c.getMethod("b");
29         Method c1 = c.getMethod("c");
30         //調用方法
31         a.invoke(obj);
32         b.invoke(obj);
33         c1.invoke(obj); 
34         要注意,xml的路徑一定要寫對,創建doc對象讀取的路徑也要寫對
35         
36         
37         
38         
39                 
40     }
41 
42 }

控制台:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM