DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> JDK 6.0--總述及XML的新標准
JDK 6.0--總述及XML的新標准
編輯:XML詳解     
《Java.6.Platform.Revealed》  Apress 2006.Jul 出版,不得不佩服國外出版社的效率。在ROR步步進逼,風聲雨聲的時候,八卦一下Java 6有什麼新功能對Java程序員還是很好的。此書易讀,代碼清晰,239頁,大約幾個小時就能翻完。

       JDK6的升級大體可以分為幾大類:

       一、JavaEE 5中新XML,WebService標准的JavaSE固化,如StAX、JAXB2、JSR181等。

       二、JSR223 Script的引入,可在Java代碼中運行Javascript, Ruby, PHP,對開發人員刺激較大。

       三、JDBC 4,開始直接支持輕度的ORM,對XML支持增強,但其實要等各jdbc driver廠商的實現。

       四、Compiler API及Pluggable Annocation,對IDE開發廠商幫助較大 ,比如即時編譯。
               而Common Annotations對普通開發人員意義更大一點。

       五、每次升級必有的Swing、Collections、 IO 的小更新。 

      JDK6 新特性很多文章都有提,還是實實在在的具體代碼更讓人放心。

一、XML新標准

JSR 105: XML Digital Signature
JSR 173: Streaming API for XML
JSR 222: JAXB 2.0

1.StAX--Streaming API,一種在Dom,Sax之外號稱完美的XML處理方式

大家都知道DOM雖好,但狂吃內存。

Sax並不把全部內容保存在自己的內存裡,而是由Sax框架不斷調用處理程序實現的OnElementBegin()等函數,由框架推送內容,處理程序通過回調函數處理所有內容,Sax將XML內容全部推給處理程序後就下班休息。所以稱為推模式。

而StAX既然被稱為拉模式,訪問數據的方法其實與Sax差不多,但與只能被動實現回調函數的不能進行暫停和跳過等操控的Sax不同,StAX是主動用Iterator API循環去讀取XML的,控制權完全在處理程序手中。

XMLInputFactory xmlif = XMLInputFactory.newInstance();
XMLEventReader xmler = xmlif.createXMLEventReader(new FileReader("points.XML"));
XMLEvent event;
while (XMLer.hasNext()) {
  event = XMLer.nextEvent();
  if (event.isStartElement()) {
    console.printf("%s", event.asStartElement().getName());
  } else if (event.isCharacters()) {
    console.printf(" %s", event.asCharacters().getData());
  }
}

2.JAXB2使用Annotation定義實現 Java->XML 的生成
  只要在POJO裡聲明了@XMLRootElement,JAXB2就會自動進行綁定。其他標簽還有一堆,大家自己看書的138頁。看sample比其他的binding方案清爽了不少。

Pojo定義:

@XMLRootElement
private static class Point ...{
int x;
int y;
//getter setter about x,y
}

生成XML的代碼:

JDK 6.0--總述及XML的新標准圖片1JAXBContext context = JAXBContext.newInstance(Point.class);
JDK 6.0--總述及XML的新標准圖片1Marshaller m = context.createMarshaller();
JDK 6.0--總述及XML的新標准圖片1Point p = new Point(3, 4);
JDK 6.0--總述及XML的新標准圖片1m.marshal(p, System.out);

輸出結果:

<?XML version="1.0" encoding="UTF-8" standalone="yes"?>
<point>
<x>3</x>
<y>4</y>
</point>XML Schema->Java Class

一個叫xjc的自帶工具負責編譯,如xjc course.xsd。

 3.XML加密簽名包

david.turing 會很關心,我一眼掃過去了,反正記得這功能已經由JDK的Javax.XML.crypto package提供就行了。


XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved