Muc d: Trung bnh Michael Galpin, Kin trc su phn mm, Ludi Labs 08 01 2010 Android l mt h diu hnh ngun mo, hin dai v l SDK cho cc thit bi di dng. Voi h diu hnh ny, ban c th tao ra cc ung dung di dng rt manh. Diu ny thm ch cn tro nn hp dn hon nua khi cc ung dung cua ban c th truy cp cc dich vu Web, c nghia l ban cn su dung ngn ngu cua Web l: XML. Trong bi vit ny, ban s thy nhiu lua chon khc nhau d lm vic voi XML trn Android v cch su dung chng d xy dung cc ung dung Android cua chnh ban. Bt du Trong bi vit ny, ban hoc cch xy dung cc ung dung Android c th lm vic voi XML tu Internet. Cc ung dung Android duoc vit bng ngn ngu lp trnh Java, do vy m kinh nghim lm vic voi cng ngh Java l diu cn phai c. D pht trin cho Android, ban s cn dn Android SDK. Ton b m trnh duoc trnh by trong bi vit ny s lm vic voi bt ky phin ban no cua Android SDK, nhung phin ban SDK 1.5_pre d duoc su dung d pht trin m trnh. Ban c th pht trin cc ung dung Android chi voi SDK v mt trnh bin tp vn ban l du, nhung s d dng hon nhiu nu su dung Android Developer Tools (ADT), l mt trnh b sung Eclipse. Di voi bi vit ny, phin ban 0.9 cua ADT d duoc dng voi Eclipse 3.4.2, mt phin ban Java. Xem Ti nguyn d ly cc lin kt dn dn tt ca cc cng cu ny.
XML trn Android Nn tang Android l mt nn tang pht trin di dng m ngun mo. N gip ban truy cp vo tt ca cc kha canh cua thit bi di dng m n chay trn d, tu cc d hoa cp thp, dn phn cung nhu l thit bi camera trn din thoai. Voi rt nhiu thu c th su dung Android, c th ban s tu hoi tai sao ban cn phin dn XML. D khng phai v lm vic voi XML rt th vi; m l n dang lm vic voi nhung thu m n kch hoat. XML thuong duoc dng nhu l mt dinh dang du liu trn Internet. Nu ban mun truy cp du liu tu Internet, cc kha nng c th l du liu s o dang XML. Nu ban mun gui du liu dn mt dich vu Web, c th ban cung cn gui ca du liu XML. Ni ngn gon l nu ung dung Android cua ban thc dy Internet, th c th ban s cn phai lm vic voi XML. Tht may mn l ban c rt nhiu lua chon c sn d lm vic voi XML trn Android.
Cc trnh phn tch XML Mt trong nhun uu dim lon nht cua nn tang Android chnh l vic n thc dy ngn ngu lp trnh Java. Android SDK khng hon ton cung cp sn moi thu cho Mi truong Thoi gian chay Java (JRE) chun cua ban, nhung n lai h tro mt phn rt dng k cho n. Nn tang Java d v dang h tro rt nhiu cch khc nhau d lm vic voi XML trong thoi gian nht dinh, v hu ht cc API c lin quan dn XML cua Java du duoc h tro dy du trn Android. V du, Simple API cua Java cho XML (SAX) v Document Object Model (DOM) hin du c sn trn Android. Nhiu nm qua, ca hai API ny l mt phn cua cng ngh Java. San phm Streaming API moi dy cho XML (StAX) hin chua c trong Android. Tuy nhin, Android lai cung cp mt thu vin tuong duong v mt chuc nng. Diu Cc t vit tt thng dng API: Application programming interface (Giao din lp trnh ung dung) RSS: Really Simple Syndication (Giao thuc tp hop thng tin don gian) SDK: Software Developers Kit (B dung cu cho nh pht trin phm mm) Page 1 of 12 Lm vic voi XML trn Android cui cng l Java XML Binding API cung khng c sn trong Android. Chc chn c th thuc hin API ny trong Android. Tuy nhin, n lai c xu huong l mt API nng k, voi rt nhiu th hin khc nhau thuc cc lop khc nhau thuong cn vic trnh by mt ti liu XML. Do vy m n khng l tuong lm cho mt mi truong bi rng buc chng han nhu thit bi cm tay m Android duoc thit k d chay trn d. Trong cc phn tip theo, ban s ly mt ngun XML don gian c sn trn Internet, v xem cch phn tch ngun d nhu th no trong pham vi mt ung dung Android su dung cc API khc nhau duoc nhc dn o trn.Truoc tin, hy xem cc phn cn thit cua ung dung don gian s su dung XML tu Internet.
Trnh dc tin Android Ung dung s ly dim tin RSS tu trang nh pht trin Android ph bin Androidster v phn tch n thnh mt danh sch cc di tuong Java don gian m ban c th su dung d quay lai Android ListView (xem Tai v d ly m ngun). Dy l hoat dng da hnh thi c din tuc l cc thuc thi khc nhau (cc thut ton phn tch XML khc nhau) cung cp hoat dng ging nhau. V du 1 cho ban thy ban c th m hnh ha diu ny d dng nhu th no trong m trnh Java su dung mt giao din.
V d 1. giao din trnh phn tch dim tin XML
Trong V du 2, lop Message l mt POJO (Plain Old Java Object) c din miu ta mt cu trc du liu.
V d 2. Message POJO UI: User interface (Giao din nguoi dng) URL: Universal Resource Locator (Dia chi ti nguyn) XML: Extensible Markup Language (Ngn ngu dnh du mo rng) package og.deve1opeWoks.ando1d 1mpof ava.uf11.L1sf
0Ove1de pub11c 5f1ng fo5f1ng{} { // om1ffed fo bev1fy Page 2 of 12 Lm vic voi XML trn Android
Message, trong V du 2, thuong rt d lm. N n di mt vi trang thi bn trong cua mnh bng cch cho php truy cp ngy thng v cc lin kt nhu cc chui don gian, trong khi th hin chng nhu cc di tuong duoc sp xp mt cch r rng (mt java.util.Date v mt java.net.URL). N l mt Value Object (Di tuong Gi tri) c din, do vy n thuc thi equals() v hashCode() dua trn trang thi bn trong cua n. N cung thuc hin giao din Comparable v th ban c th su dung n d sp xp (theo ngy thng). Thuc t, du liu duoc phn loai tu dim tin, do vy m diu ny khng cn thit. Mi thuc thi trnh phn tch s cn dua mt URL dn dim tin Androidster v su dung ci ny d mo mt kt ni HTTP dn trang Androidster. Hoat dng ph bin ny duoc m hnh ha mt cch tu nhin trong m trnh Java su dung lop co so truu tuong nhu trong V du 3.
V d 3. Lp trnh phn tch dim tin co ban
Lop co so luu tru feedUrl v su dung n d mo java.io.InputStream. Nu c bt ky sai st no, don gian n tha mt RuntimeException, sao cho ung dung dung hoat dng mt cch nhanh chng. Lop co so cung xc dinh mt vi hng s don gian cho tn cc the. V du 4 trnh by mt s ni dung mu tu dim tin, qua d ban c th thy duoc nghia cua cc the ny.
Nhu ban c th thy tu mu trong V du 4, mt ITEM tuong duong voi mt th hin Message. Cc nt con cua muc chon (TITLE, LINK v v.v..) tuong duong cc dc tnh cua th hin Message. V ban bit dim tin trng nhu th no ri v c sn tt ca cc phn ph bin, hy xem lm th no d phn tch dim tin ny su dung cc cng ngh khc nhau c sn trn Android. Ban s bt du voi SAX.
S dng SAX Trong mi truong Java, ban c th thuong xuyn su dung SAX API khi ban mun c mt trnh phn tch nhanh v mun han ch ti da vic su dung (footprint) b nho ung dung cua ban. Diu d khin cho cho n rt ph hop cho thit bi di dng chay Android. Ban c th su dung SAX API nhu l tu mi truong Java, m khng cn dn nhung thay di dc bit cn thit d chay trn Android.V du 5 trnh by mt thuc thi SAX cua giao din FeedParser.
<desc1pf1on>Moe defa11s have emeged on fhe f1sf 5amsung handsef fo un Ando1d. A yef-fo-be announced phone ca11ed fhe 5000 1s be1ng epofed ...</desc1pf1on>
<pubDafe>1hu, 16 Ap 2009 07:1:51 +0100</pubDafe>
</1fem>
<1fem>
<f1f1e>Ando1d Cupcake updafe on fhe ho1zon</f1f1e>
pub11c L1sf<Message> pase{} { 5AXPaseIacfoy facfoy = 5AXPaseIacfoy.neWlnsfance{} fy { 5AXPase pase = facfoy.neW5AXPase{} ksshand1e hand1e = neW ksshand1e{} Page 4 of 12 Lm vic voi XML trn Android
Nu truoc dy ban d su dung SAX, th ci ny trng cung kh quen thuc. Nhu voi bt ky thuc thi SAX no, phn lon cc chi tit du nm trong trnh xu l SAX. Trnh xu l nhn cc su kin tu trnh phn tch SAX khi n chay nhanh qua ti liu XML. Trong truong hop ny, ban vua tao ra mt lop moi goi l RssHandler v dng k n nhu l mt trnh xu l cho trnh phn tch, nhu trong V du 6.
V d 6. Trnh xu l SAX
Lop RssHandler mo rng lop org.xml.sax.helpers.DefaultHandler. Lop ny cung cp cc thuc thi mc dinh, khng thao tc cho tt ca cc phuong thuc tuong tu cc su kin duoc tao ra boi trnh phn tch SAX. Diu ny cho php cc lop con chi ghi chn ln cc phuong thuc khi cn thit. RssHandler c mt API b sung, getMessages. Ci ny tra v danh sch cc di tuong Message m trnh xu l thu thp duoc khi n nhn cc su kin tu trnh phn tch SAX. N c hai bin trong khc, mt l currentMessage cho th hin Message dang duoc phn tch, v mt l bin StringBuilder goi l builder luu tru du liu k tu tu cc nt vn ban. Cc bin ny du duoc pase.pase{fh1s.geflnpuf5feam{}, hand1e} efun hand1e.gefMessages{} } cafch {Lxcepf1on e} { fhoW neW kunf1meLxcepf1on{e} } } } 1mpof sfaf1c og.deve1opeWoks.ando1d.8aseIeedPase."
0Ove1de pub11c vo1d sfafDocumenf{} fhoWs 5AXLxcepf1on { supe.sfafDocumenf{} messages = neW AayL1sf<Message>{} bu11de = neW 5f1ng8u11de{} }
0Ove1de pub11c vo1d sfafL1emenf{5f1ng u1, 5f1ng 1oca1Name, 5f1ng name, Aff1bufes aff1bufes} fhoWs 5AXLxcepf1on { supe.sfafL1emenf{u1, 1oca1Name, name, aff1bufes} 1f {1oca1Name.equa1slgnoeCase{l1LM}}{ fh1s.cuenfMessage = neW Message{} } } } Page 5 of 12 Lm vic voi XML trn Android bt du khi phuong thuc startDocument duoc dn ra khi trnh phn tch gui su kin tuong ung cho trnh xu l. Hy xem phuong thuc startElement trong V du 6. Phuong thuc ny duoc goi mi khi bt gp the mo trong ti liu XML. Ban chi cn quan tm khi no the d l the ITEM. Trong truong hop d, ban tao ra mt Message moi. By gio hy nhn vo phuong thuc characters. Phuong thuc ny duoc goi ra khi bt gp du liu k tu tu cc nt vn ban. Du liu d dng duoc thm vo bin builder. Cui cng hy xem phuong thuc endElement. Phuong thuc ny duoc goi ra khi bt gp the kt thc. Di voi cc the tuong ung voi cc dc tnh cua mt Message, ging nhu TITLE v LINK, dc tnh thch hop duoc thit dt trn currentMessage su dung du liu tu bin builder. Nu the kt thc l mt ITEM, th currentMessage thm vo danh sch Messages. Dy l su phn tch SAX rt din hnh; o dy khng c g l duy nht di voi Android. V th nu ban bit cch vit mt trnh phn tch SAX Java, th ban bit cch vit mt trnh phn tch SAX Android. Tuy nhin, Android SDK c b sung thm mt s tnh nng thun tin vo SAX.
Phn tch SAX d dng hon Android SDK c chua mt lop tin ch duoc goi l android.util.Xml. V du 7 trnh by cch ci dt mt trnh phn tch SAX voi cng lop tin ch nhu th.
V d 7. Trnh phn tch SAX Android
Luu l lop ny vn su dung trnh xu l SAX chun, v don gian ban d su dung lai RssHandler nhu trong V du 7 o trn. Vic c th su dung lai trnh xu l SAX rt tt, nhung n vn c di cht phuc tap v m trnh. Ban c tuong tuong, nu ban phai phn tch mt ti liu XML phuc tap hon rt nhiu, trnh phn tch c th tro thnh manh dt mu m cho cc li. V du, hy xem lai phuong thuc endElement trong V du 6. Luu cch phuong thuc ny kim tra nhu th no nu currentMessage c gi tri khng truoc khi n c ci dt cc thuc tnh? By gio hy nhn vo XML mu trong V du 4. Luu rng c cc the TITLE v LINK nm ngoi cc the ITEM. D l l do tai sao kim tra gi tri khng duoc dua vo. Nu khng th the TITLE du tin c th gy ra mt NullPointerException. Android bao gm ca bin th SAX API cua chnh n (xem V du 8) loai bo yu cu ban phai vit trnh xu l SAX cua chnh ban.
V d 8. Trnh phn tch SAX Android don gian pub11c c1ass Ando1d5axIeedPase exfends 8aseIeedPase {
pub11c L1sf<Message> pase{} { f1na1 Message cuenfMessage = neW Message{} koofL1emenf oof = neW koofL1emenf{"ss"} f1na1 L1sf<Message> messages = neW AayL1sf<Message>{} L1emenf channe1 = oof.gefCh11d{"channe1"} L1emenf 1fem = channe1.gefCh11d{l1LM} 1fem.sefLndL1emenfL1sfene{neW LndL1emenfL1sfene{}{ pub11c vo1d end{} { messages.add{cuenfMessage.copy{}} } }} Page 6 of 12 Lm vic voi XML trn Android
Nhu d hua, m phn tch SAX moi khng su dung trnh xu l SAX. Thay vo d n su dung cc lop tu gi android.sax trong SDK. Cc lop ny cho php ban m hnh ha cu trc cua ti liu XML cua ban v thm mt trnh nghe su kin nu cn. Trong m trnh trn, ban khai bo rng ti liu cua ban s c mt phn tu gc c tn rss v rng phn tu ny s c ba phn tu con l channel. Tip dn ban ni rng channel s c ba phn tu con duoc goi l ITEM v ban bt du gn cc trnh nghe. Di voi mi trnh nghe, ban d su dung mt lop bn trong v danh d thuc hin giao din ban quan tm (hoc EndElementListner hoc EndTextElementListener). Ch khng cn phai theo di du liu k tu. Vic ny khng chi don gian hon m thuc su cn hiu qua hon. Cui cng, khi ban goi dn phuong thuc tin ch Xml.parse, by gio ban dua vo trnh xu l duoc tao ra tu phn tu gc. Ton b m trnh o trn trong V du 8 thuc loai ty chon. Nu ban thy thoai mi voi m trnh phn tch SAX chun trong mi truong Java, th ban c th tch vo d. Nu ban mun thu cc trnh bao boc tin loi do Android SDK cung cp, ban cung c th su dung n. Nu ban khng mun su dung SAX th sao dy? Vn cn c mt vi lua chon khc. Lua chon du tin ban s thy d l DOM.
Lm vic DOM DOM phn tch trn Android duoc h tro hon ton. N lm vic chnh xc nhu khi n lm vic trong m trnh Java m ban s chay trn my tnh d bn hoc trn mt my chu. V du 9 trnh by mt thuc thi dua trn DOM cua giao din trnh phn tch.
pub11c L1sf<Message> pase{} { Documenf8u11deIacfoy facfoy = Documenf8u11deIacfoy.neWlnsfance{} L1sf<Message> messages = neW AayL1sf<Message>{} fy { Documenf8u11de bu11de = facfoy.neWDocumenf8u11de{} Documenf dom = bu11de.pase{fh1s.geflnpuf5feam{}} L1emenf oof = dom.gefDocumenfL1emenf{} NodeL1sf 1fems = oof.gefL1emenfs8y1agName{l1LM} fo {1nf 1=01<1fems.gefLengfh{}1++}{ Message message = neW Message{} Page 7 of 12 Lm vic voi XML trn Android
Ging nhu v du SAX du tin, khng c g l cu th di voi Android v m trnh ny. Trnh phn tch DOM doc tt ca cc ti liu XML vo b nho ri sau d cho php ban su dung cc DOM API d chay ngang qua cy XML, truy vn du liu m ban mun. Dy l m trnh rt d lm, v, trong mt s cch, cn don gian hon ca cc thuc thi dua trn SAX. Tuy nhin, thng thuong DOM tiu tn nhiu b nho hon v truoc tin moi thu du duoc doc vo b nho. Diu ny c th l mt vn d trn thit bi di dng chay Android, nhung n c th dp ung duoc trong mt vi truong hop su dung nht dinh m dung luong ti liu XML s khng bao gio qu lon. C th diu ny ngu rng cc nh pht trin Android d don rng trnh phn tch SAX s ph bin hon rt nhiu trn cc ung dung Android, do d cc tin ch b sung duoc cung cp cho n. Mt loai trnh phn tch XML khc cung c trn Android, v d l trnh phn tch ko.
Trnh phn tch ko XML Nhu d d cp trong cc phn truoc, Android khng cung cp h tro cho StAX API cua Java. Tuy nhin Android lai di km voi mt trnh phn tch ko lm vic tuong tu nhu StAX. N cho php m ung dung cua ban ko hoc tm kim cc su kin tu trnh phn tch, tri nguoc voi trnh phn tch SAX tu dng dy cc su kin cho trnh xu l. V du 10 miu ta mt thuc thi trnh phn tch ko cua mt giao din trnh phn tch dim tin.
Trnh phn tch ko lm vic tuong tu nhu trnh phn tch SAX. N c cc su kin tuong tu (phn tu bt du, phn tu kt thc) nhung ban phai ko tu chng (parser.next()). Cc su kin duoc gui di duoi dang cc m s, v th ban c th su dung mt case-switch don gian. Ch , thay v nghe cho dn khi kt thc cc phn tu nhu trong phn tch SAX, voi trnh phn tch ko, tht d dng tin hnh hu ht cc xu l ngay tu du. Trong m trnh trong V du 10, khi mt phn tu bt du, ban c th goi dn parser.nextText() d ko tt ca du liu k tu tu ti liu XML. Diu ny mang dn mt su don gian ha tt cho phn tch SAX. Cung cn ch rng ban dt mt co (bin boolean done) d nhn bit khi no ban dn phn kt thc ni dung m ban quan tm. Diu ny cho php ban som tam dung vic doc ti liu XML, v ban bit rng m trnh s khng quan tm dn phn cn lai cua ti liu. Diu ny c th rt huu ch, dc bit nu ban chi cn mt phn nho ti liu dang duoc truy cp. Ban c th giam dng k thoi gian phn tch bng cch dung vic phn tch cng som cng tt. Hon nua, kiu ti uu ha ny dc bit quan trong trn thit bi di dng noi tc d kt ni c th chm. Trnh phn tch ko c mt vi uu dim v hiu nng cung nhu uu dim su dung d dng. Cung c th su dung n d vit XML.
Tao XML Dn tn by gio, ti vn d v dang tp trung phn tch XML tu Internet. Tuy nhin, thinh thoang ung dung cua ban cn gui XML toi mt my chu o xa. Hin nhin ban c th su dung mt StringBuilder hoc ci g d tuong tu d tao ra mt chui XML. Mt thay th khc nua bt ngun tu trnh phn tch ko trong V du 11.
V d 11. Vit XML bng trnh phn tch ko 1f {name.equa1slgnoeCase{LlNk}}{ cuenfMessage.sefL1nk{pase.nexf1exf{}} } e1se 1f {name.equa1slgnoeCase{DL5CklP1lON}}{ cuenfMessage.sefDesc1pf1on{pase.nexf1exf{}} } e1se 1f {name.equa1slgnoeCase{Pu8DA1L}}{ cuenfMessage.sefDafe{pase.nexf1exf{}} } e1se 1f {name.equa1slgnoeCase{1l1LL}}{ cuenfMessage.sef11f1e{pase.nexf1exf{}} } } beak case Xm1Pu11Pase.LND1AG: name = pase.gefName{} 1f {name.equa1slgnoeCase{l1LM} && cuenfMessage != nu11}{ messages.add{cuenfMessage} } e1se 1f {name.equa1slgnoeCase{ChANNLL}}{ done = fue } beak } evenf1ype = pase.nexf{} } } cafch {Lxcepf1on e} { fhoW neW kunf1meLxcepf1on{e} } efun messages } } p1vafe 5f1ng W1feXm1{L1sf<Message> messages}{ Xm15e1a11ze se1a11ze = Xm1.neW5e1a11ze{} 5f1ngW1fe W1fe = neW 5f1ngW1fe{} fy { se1a11ze.sefOufpuf{W1fe} se1a11ze.sfafDocumenf{"u1I-", fue} se1a11ze.sfaf1ag{"", "messages"} se1a11ze.aff1bufe{"", "numbe", 5f1ng.va1ueOf{messages.s1ze{}}} fo {Message msg: messages}{ se1a11ze.sfaf1ag{"", "message"} se1a11ze.aff1bufe{"", "dafe", msg.gefDafe{}} se1a11ze.sfaf1ag{"", "f1f1e"} se1a11ze.fexf{msg.gef11f1e{}} se1a11ze.end1ag{"", "f1f1e"} se1a11ze.sfaf1ag{"", "u1"} se1a11ze.fexf{msg.gefL1nk{}.foLxfena1Iom{}} se1a11ze.end1ag{"", "u1"} se1a11ze.sfaf1ag{"", "body"} Page 9 of 12 Lm vic voi XML trn Android
Lop XmlSerializer l mt phn trong gi ging nhu XmlPullParser duoc dng trong phn truoc. Thay v ko vo cc su kin, n dy chng ra dn mt lung hoc mt b ghi. Trong truong hop ny, n d dng dy chng sang mt th hin java.io.StringWriter. N cung cp mt API don gian cng voi cc phuong thuc d bt du v kt thc mt ti liu, xu l cc phn tu v thm vn ban hoc cc thuc tnh. Dy c th l mt lua chon thay th kh tt cho vic su dung mt StringBuilder, v d dng dam bao XML cua ban chun xc.
Tng kt Loai ung dung no ban mun xy dung cho cc thit bi Android? D l loai no di nua, nu n cn lm vic voi du liu tu Internet, th c th n cn phai lm vic voi XML. Trong bi vit ny, ban d thy rng Android duoc tch hop di cng voi rt nhiu cng cu xu l XML. Ban c th chon ly mt trong cc cng cu d nhu l cng-cu-lua-chon cua ban, hoc ban c th lua chon cn cu vo truong hop su dung. Thng thuong su lua chon an ton l chon cng voi SAX, v Android cung cp cho ban ca cch truyn thng d thuc hin SAX v mt trnh bao boc tin loi kho lo trn ca SAX. Nu ti liu cua ban nho, th c l DOM l cch don gian hon nn theo. Nu ti liu cua ban lon, nhung ban chi cn mt phn ti liu, th trnh phn tch ko XML c l l cch hiu qua hon nn theo. Cui cng, d vit XML, gi trnh phn tch ko cung cung cp mt cch thun tin d lm vic d. V th, ci m XML cua ban cn c l g di nua, th Android SDK vn c cho ban.
Ti v
Ti nguyn Hc tp Develop Android applications with Eclipse (Frank Ableson,developerWorks, 02/2008): Cch d dng nht d pht trin cc ung dung Android l su dung Eclipse. Hy tm hiu tt ca diu ny trong bi huong dn ny.
Using integrated packages: Codehaus' Woodstox (Michael Galpin, developerWorks, 07/2007): Dnh cho so snh khc cua SAX, DOM, v trnh phn tch ko, hy doc bi vit ny.
StAX'ing up XML, Part 2: Pull parsing and events (Peter Nehrer, developerWorks, December 2006): Ci nhn su hon v trnh phn tch ko XML.
Understanding SAX (Nicholas Chase, developerWorks, 07/2003): Tro thnh chuyn gia v phn tch SAX voi bi huong dn ny. se1a11ze.fexf{msg.gefDesc1pf1on{}} se1a11ze.end1ag{"", "body"} se1a11ze.end1ag{"", "message"} } se1a11ze.end1ag{"", "messages"} se1a11ze.endDocumenf{} efun W1fe.fo5f1ng{} } cafch {Lxcepf1on e} { fhoW neW kunf1meLxcepf1on{e} } } Tn Kch thuc Phuong thc tai AndroidXml.zip 70KB HTTP Thng tin v phuong thuc tai Page 10 of 12 Lm vic voi XML trn Android IBM, logo IBM, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli, v WebSphere l cc thuong hiu hoc thuogn
Understanding DOM (Nicholas Chase, developerWorks, 03/2007): D hiu thm v trnh phn tch, hy doc bi huong dn ny.
Ti liu Android SDK: Tm hiu b cng cu ny d pht trin v sua li m ung dung v thit k mt UI ung dung.
Open Handset Alliance: Tm kim nh ti tro cho Android, mt nhm 47 cng ty cng ngh v di dng lm vic d dy nhanh tc d di moi trong cng ngh di dng.
Chung chi XML cua IBM: Tm hiu xem lm th no m ban c th tro thnh mt Nh pht trin c chung chi IBM trong XML v cc cng ngh lin quan.
Thu vin k thut XML: Xem khu vuc developerWorks XML noi c rt nhiu cc bi vit chuyn mn v cc meo nho, bi huong dn, cc tiu chun v Sch do IBM.
Cc su kin k thut WebdeveloperWorks v web quang b: Lm quen voi cng ngh trong cc phin ny.
developerWorks podcast: Nghe cc bi phong vn th vi v cc cuc thao lun dnh cho cc nh pht trin phn mm.
Ly san phm v cng ngh Android SDK: Tai v, truy cp tham chiu API, v nhn tin tuc moi nht v Android tu trang web chnh thuc cua cc nh pht trin Android.
Du n M ngun Mo Android: Ly m ngun mo cho Android.
Eclipse IDE: Ly phin ban moi nht v cho n hoat dng.
Cc phin ban dnh gi san phm IBM: Tai v hoc su dung cc ban thu nghim truc tuyn trong IBM SOA Sandbox v bt du su dung cc cng cu pht trin ung dung v cc san phm phn mm trung gian tu DB2, Lotus, Rational, Tivoli, v WebSphere.
Thao lun Tham gia din dn thao lun.
Cc din dn thao lun v XML: Tham gia mt s cuc thao lun v XML.
developerWorks blogs: Doc cc blog ny v tham gia vo cng dng developerWorks.
i nt v tc gi
Michael Galpin d pht trin phn mm Java mt cch chuyn nghip tu nm 1998. ng hin dang lm vic cho eBay. ng d c bng v ton hoc cua Vin Cng ngh California. Page 11 of 12 Lm vic voi XML trn Android hiu d duoc dng k cua International Business Machines Corporation tai M v cc quc gia khc. Cc thuong hiu ny v cc diu khoan duoc dng k thuong hiu IBM xut hin ln du tin trong bi vit ny di km voi biu tuong ph hop ( hoc ), chi ra rng dy l cc thuong hiu d duoc dng k tai M hoc thuc so huu hop php cua IBM khi bi vit ny duoc pht hnh. Cc thuong hiu ny cung c th duoc dng k hoc l thuong hiu hop php tai cc quc gia khc. Hy xem danh sch hin c v cc thuong hiu IBM. Adobe, logo Adobe, PostScript, v logo PostScript hoc l thuong hiu duoc dng k hoc l thuong hiu cua Adobe Systems Incorporated tai M v/hoc cc quc gia khc. Java v tt ca cc thuong hiu dua trn Java du l thuong hiu cua Sun Microsystems, Inc. tai M v/hoc cc quc ga khc. Cc tn dich vu, cng ty hoc san phm khc c th l thuong hiu hoc dich vu cua cc cng ty khc. Tn cua cng ty, san phm hay dich vu c th l nhn hiu dng k hoc nhn hiu dich vu cua nguoi khc. Page 12 of 12 Lm vic voi XML trn Android