使用asx3m與xstream配合解決flex與java利用httpservice傳遞xml資料問題

來源:互聯網
上載者:User

後端也存在java user object類,利用xstream組件把list中的user對象序列化成xml資料。在flex端通過httpservice使用E4X format格式擷取。
剛開始自己準備通過e4x技術來解析xml,構造flex user object,類似這樣的處理方式: 複製代碼 代碼如下:public function fromXML(currentNode:XML):void{
userID = new Number(currentNode.userID);
userName = currentNode.userName;
......
}

不過這種方式太過於繁瑣。於是想自己利用flex reflect來實現一個通用的convert或者說類似xstream這樣的組件。
當然,首先是去google一把,還真找到兩個,一個是XMLConverter (http://www.customware.net/repository/display/FLEX/Integrating+Flex+with+XML+using+XMLConverter),一個就是完全相容xtream的 asx3m (http://code.google.com/p/asx3m/)。
XMLConverter簡單,不過不是開源的,對於解析單個對象的xml格式,還是夠的,但是對於解析複雜的包含list結構的,就愛莫能助了。最終還是採用了asx3m,很方便。—— 唯一不爽的就是,asx3m竟然需要依賴VEGAS(http://vegas.googlecode.com/svn/AS3/trunk/src/vegas/)這個龐然大物(其實其只需要hashmap, list等幾個輔助類)
使用asx3m確實很方便,兩端代碼也很簡易,如下:
伺服器端的java代碼:
List<WorkItem> users = um.queryUsers(1);
XStream xstream = new XStream();
xstream.alias("User", User.class);
String xml = xstream.toXML(users);
List<WorkItem> users = um.queryUsers(1);
XStream xstream = new XStream();
xstream.alias("User", User.class);
String xml = xstream.toXML(users);
Flex端的as代碼:
import hr.binaria.asx3m.Asx3m;
import hr.binaria.asx3m.Asx3mer;
var xmlc:Asx3mer = Asx3mer.instance;
xmlc.xstream.alias("User", User);
//這個array中就是user對象列表
var array:ArrayCollection = xmlc.fromXML( compXML ) as ArrayCollection;
import hr.binaria.asx3m.Asx3m;
import hr.binaria.asx3m.Asx3mer;
var xmlc:Asx3mer = Asx3mer.instance;
xmlc.xstream.alias("User", User);
//這個array中就是user對象列表
var array:ArrayCollection = xmlc.fromXML( compXML ) as ArrayCollection;
就這麼簡單。—— 當然,這種方式,需要在兩端維護兩套對象結構(java object)和(as object),但其擴充性和靈活度要比那種AMF的remoteobject的方式高很多。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.