java xml設定檔

來源:互聯網
上載者:User

標籤:調用   常用方法   命名   定義   doctype   開頭   win   utf-8   ora   

 

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解析方式

 

l 常見的解析開發包:

 

n JAXP: sun公司提供支援DOM和SAX開發包

 

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     @Override12     public void b() {13         System.out.println("青年");14         15     }16 17     @Override18     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 }

控制台:

 

java xml設定檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.