西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索
缂侇垵宕电划鍝勵啅閵夈儱寰�
U濠㈠爢鍐憥v4.7.37.56 闁哄牃鍋撻柡鍌涘婢э拷U濠㈠爢鍐憥v4.7.37.56 闁哄牃鍋撻柡鍌涘婢э拷
HD Tune  Prov5.75 婵懓顦€佃尙绱掗懗顖氼棌闁绘鎳撻崺鍡涙偋閿燂拷HD Tune Prov5.75 婵懓顦€佃尙绱掗懗顖氼棌闁绘鎳撻崺鍡涙偋閿燂拷
DiskGenius 濞戞挻鎸风粭鐔兼偋閸︼拷5.2.1.941 閻庤蓱閺岀喖鎮ч敓锟�DiskGenius 濞戞挻鎸风粭鐔兼偋閸︼拷5.2.1.941 閻庤蓱閺岀喖鎮ч敓锟�
360閺夌儐鍨▎銏㈢不閳ユ剚鍟€v7.5.0.1460 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�360閺夌儐鍨▎銏㈢不閳ユ剚鍟€v7.5.0.1460 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Cpu-Z濞戞搩鍘介弸鍐偋閸э拷1.98.0 缂備浇鍎绘竟濠冪▔椤撶喐鐎柣妤嬫嫹Cpu-Z濞戞搩鍘介弸鍐偋閸э拷1.98.0 缂備浇鍎绘竟濠冪▔椤撶喐鐎柣妤嬫嫹
缂傚啯鍨圭划璺侯啅閵夈儱寰�
闁煎灚宕橀鍡涙偨娴e啫澹嬬紒鐘偓鎰佸晙V15.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闁煎灚宕橀鍡涙偨娴e啫澹嬬紒鐘偓鎰佸晙V15.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
office2016婵犵鍋撴繛鑼额嚙娴兼劙宕楃粚鏀巗v19.5.2 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�office2016婵犵鍋撴繛鑼额嚙娴兼劙宕楃粚鏀巗v19.5.2 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
閺夆晛鎳樺ù锟�11闁哄牃鍋撻柡鍌涘婢ф11.3.6.1870 閻庤蓱閺岀喖鎮ч敓锟�閺夆晛鎳樺ù锟�11闁哄牃鍋撻柡鍌涘婢ф11.3.6.1870 閻庤蓱閺岀喖鎮ч敓锟�
360闁稿繐绉烽崹鍊僫fi5.3.0.5000 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�360闁稿繐绉烽崹鍊僫fi5.3.0.5000 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
360閻庣懓顦崣蹇撁硅箛姘兼綌闁革綇鎷�2022v13.1.5188.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�360閻庣懓顦崣蹇撁硅箛姘兼綌闁革綇鎷�2022v13.1.5188.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
濠㈣埖鑹鹃悰鐔告媴閹炬儼顫�
闂佷即鏀遍崹婊堟閸忓懐顔囬柣鈺嬫嫹2022v9.1.6.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闂佷即鏀遍崹婊堟閸忓懐顔囬柣鈺嬫嫹2022v9.1.6.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁哄棙鎸抽ˉ鎾广亹闁秶鍙�2021V5.81.0202.1111閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闁哄棙鎸抽ˉ鎾广亹闁秶鍙�2021V5.81.0202.1111閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闊浂鍋呴幐锟�5.0婵﹢鏅茬粭澶愬础閸モ晠鐛撻柣妤嬫嫹5.0.80 濡ょ姰鍔岄妵鏃堟偋閿燂拷闊浂鍋呴幐锟�5.0婵﹢鏅茬粭澶愬础閸モ晠鐛撻柣妤嬫嫹5.0.80 濡ょ姰鍔岄妵鏃堟偋閿燂拷
濞村吋锕㈤崣锟�2022閻庡箍鍨洪崺娑氱博閻わ拷8.0.9.11050 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�濞村吋锕㈤崣锟�2022閻庡箍鍨洪崺娑氱博閻わ拷8.0.9.11050 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁绘牕宕〃宀勬嚌妤︽娼掑Λ鐗堝弳13.1.5閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闁绘牕宕〃宀勬嚌妤︽娼掑Λ鐗堝弳13.1.5閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁搞儲鍎抽懜浼村炊閹冨壖
photoshop cs6 濞戞搩鍘介弸鍐偋閿燂拷13.1.2.3 闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹photoshop cs6 濞戞搩鍘介弸鍐偋閿燂拷13.1.2.3 闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹
Autodesk 3ds Max 2012閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢ф32&64]Autodesk 3ds Max 2012閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢ф32&64]
CAD2007闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹CAD2007闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹
vc閺夆晜鍔橀、鎴炴償閿燂拷2019闁哄牃鍋撻柡鍌涘婢ф2019.3.2(32&64濞达綇鎷�)vc閺夆晜鍔橀、鎴炴償閿燂拷2019闁哄牃鍋撻柡鍌涘婢ф2019.3.2(32&64濞达綇鎷�)
.NET Framework 4.8閻庤蓱閺岀喖鎮ч敓锟�4.8.3646.NET Framework 4.8閻庤蓱閺岀喖鎮ч敓锟�4.8.3646
闁煎崬锕ら妵澶愭嚂閺冨倻鎹�
QQ2022v9.5.6.28129 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�QQ2022v9.5.6.28129 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
鐎甸偊鍠曟穱濠囨偨娴e啫澹嬮柣妤嬫嫹2022v3.5.0.44 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�鐎甸偊鍠曟穱濠囨偨娴e啫澹嬮柣妤嬫嫹2022v3.5.0.44 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁告鍟版晶浼村础閺嵮屽晙鐎规悶鍎扮紞鏃堢嵁閸愭彃閰眝9.02.02N 閻庤蓱閺岀喖鎮ч敓锟�闁告鍟版晶浼村础閺嵮屽晙鐎规悶鍎扮紞鏃堢嵁閸愭彃閰眝9.02.02N 閻庤蓱閺岀喖鎮ч敓锟�
QT閻犲浂鍙冮悡绂�4.6.80.18262閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�QT閻犲浂鍙冮悡绂�4.6.80.18262閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
濡炲鍋樻穱锟�2018V6.2.0700 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�濡炲鍋樻穱锟�2018V6.2.0700 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁告柣鍔嬬紞鏂裤€掗崨濠傜亞
濞撴氨濮峰ú宥嗩槹閻愯埖绨犵紓鍐句簼娴兼捇鏌堥挊澶岊伋
濡ょ姵鍨块埞鍫熺▔鎼达絿鍩嗛柡澶嗗亾缂備胶绻濋崥顐㈩嚗娴h绠�
闁惧繑鍔栧ḿ鍐储閻旂柉鍩�2
濞寸姰鍎查幏濠氭儍閸曨厾娉㈤柛姘炬嫹
闁哄鍋撻柟纰夋嫹5閻犙嶇畱閸橈拷
FPS閻忓繐瀚崵锟�
H1Z1濞戞搩鍘介弸鍐偋閿燂拷
閻庢稏鍊曢惌婵嬪箚婵犲洨鎼�3
濞戞挸顦抽~妤€煤閼碱剙顥楃紒澶婄Ч閸庢挳姊奸敓锟�6闁瑰瓨锕㈠Σ锔界▕鐎n亜鐎�
濞达絽鐏濋幊锟犲矗椤掆偓閺侊拷8:闁绘粓顣﹂崬顒勫箣濡湱鎸�3
闁告艾鐗撻崳鍓ф啑閸涱収妲�5:妤犵偠宕靛Λ锟�
缂佹梻鍋ら埀顒傚枑閻栧爼骞嬮敓锟�
婵炲柌鍕哎闁告銈嗙盃婵☆垪鍓濈€氾拷2
闁哄啫顑堝ù鍡樻姜椤斿灝鍓�
闁哄绀侀幖褎顦伴悙鑸电盃18
缂佷胶鍋涙慨蹇曠矓閹达絽绗�
F1 2015
闁告劖甯″▍鎾斥柦濞嗘垶纾�
闁瑰瓨鍨瑰▓鎴炵▔閺嶎偅娅�1.8.2
婵炲澧楁刊娲偡閻愭壆鑲�
濡ゆぜ鍎村畷锟�:婵炲鍏樺В锟�
闁哄嫮鍠撻弲顐f綇閻熼偊鏆�
闁哄牃鍋撻柛姘捣閺佹挻娼诲Ο搴撳亾閸栫徎闁绘鎷�
缂佹稒鐗滈弳鎰€掗崨濠傜亞
闁哄倸娲﹀Σ锟�5:缂傚洤绨奸梽鍕棘妫颁胶鐟柣锝忔嫹
濞戞挸顦ù妤勭疀閿燂拷12濠电偘绀佹慨蹇涘礉閻樻彃绻侀柣妤嬫嫹
濞e浄绻濋弳杈ㄧ▕鐎n喖娅i柡鍫嫹14濠电偘绀佹慨蹇涘礉閻樻彃绻侀柣妤嬫嫹
闂傚啯瀵цぐ渚€骞忛敓锟�:闁稿繈鍔戝ḿ浼村箣濡湱鎸�
閻㈩垱绻傚ù妤呭籍閺堥潧鏁�2鐎甸鐒﹀﹢鍥嚀閿燂拷
闁汇垻鍠愬鍧楀嫉瀹ュ懎顫�
闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷
闁谎勫劤鐎规娊宕烽弶鎸庣閻庝絻澹堥崺锟�2022V15.12.10 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹闁谎勫劤鐎规娊宕烽弶鎸庣閻庝絻澹堥崺锟�2022V15.12.10 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹
闁归潧顑嗗┃鈧繛锝喢悿鍌溾偓骞垮灪閸╂稓绮╅惀锟�10.8.40閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁归潧顑嗗┃鈧繛锝喢悿鍌溾偓骞垮灪閸╂稓绮╅惀锟�10.8.40閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁伙絽鎳橀埀顒佹⒒缂嶅骞嶇€n偅绨氶悗骞垮灪閸╂稓绮╅惀锟�5.6.9 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁伙絽鎳橀埀顒佹⒒缂嶅骞嶇€n偅绨氶悗骞垮灪閸╂稓绮╅惀锟�5.6.9 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁告鍟虫禍浼存儗閵夈劎妲曢柡鍫濈Т婵剬ppv4.5.1閻庤蓱閺岀喖鎮ч敓锟�闁告鍟虫禍浼存儗閵夈劎妲曢柡鍫濈Т婵剬ppv4.5.1閻庤蓱閺岀喖鎮ч敓锟�
鐟滀即浜堕悡鍫曞箻椤撶喐鏉�
p2psearcher閻庣懓顦畷婊堟偋閿燂拷7.3  闁归潧顑嗗┃鈧柣妤嬫嫹p2psearcher閻庣懓顦畷婊堟偋閿燂拷7.3 闁归潧顑嗗┃鈧柣妤嬫嫹
闂佷即顥撶€氬秹妫呴崗鍛唶2022閻庤蓱閺岀喖鎮ч崷锟�11.0.8 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闂佷即顥撶€氬秹妫呴崗鍛唶2022閻庤蓱閺岀喖鎮ч崷锟�11.0.8 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁绘牕宕〃宀勬嚌閻戞ê顤侀柡鍫f婢ф13.1.0闁绘牕宕〃宀勬嚌閻戞ê顤侀柡鍫f婢ф13.1.0
闁谎勫劤鐎瑰疇銇愰柆宥囧従7.13.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁谎勫劤鐎瑰疇銇愰柆宥囧従7.13.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
鐟滀即浜堕悡鍫曞礂閸儲鏁眝6.9.0 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹鐟滀即浜堕悡鍫曞礂閸儲鏁眝6.9.0 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹
闂傚啫鎳撻鏉款啅閵夈儱寰�
闁煎灚宕橀鍡涘礉閵婏附鐎琕9.11.5 閻庣懓顦畷婊堟偋閿燂拷闁煎灚宕橀鍡涘礉閵婏附鐎琕9.11.5 閻庣懓顦畷婊堟偋閿燂拷
濞戞棑闄勫Λ妤冧焊韫囨凹鍤涢柛蹇撶Х閸ㄥ倿鎮ч崼鐔告嫳v11.5.5.153 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�濞戞棑闄勫Λ妤冧焊韫囨凹鍤涢柛蹇撶Х閸ㄥ倿鎮ч崼鐔告嫳v11.5.5.153 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
QQ闂傚啫鎳撻浼村闯閳烘及pV7.7.1.910 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�QQ闂傚啫鎳撻浼村闯閳烘及pV7.7.1.910 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁硅櫕甯婂Ч澶愭偩閸涱厽鍎旈柛姘煎厸閸旂剬ppv7.1.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闁硅櫕甯婂Ч澶愭偩閸涱厽鍎旈柛姘煎厸閸旂剬ppv7.1.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
閻犙囶棑閸嬶絿鎷犵拋鍐插app闁哄倹澹嗘晶妤呭嫉閿燂拷20227.9.186 閻庣懓顦畷婊堟偋閿燂拷閻犙囶棑閸嬶絿鎷犵拋鍐插app闁哄倹澹嗘晶妤呭嫉閿燂拷20227.9.186 閻庣懓顦畷婊堟偋閿燂拷
闂佸弶鍨奸悗娲偠閸℃艾鍋�
妤犵偛鍟块悾銊ф嫚娴gǹ鐓栭悗鐟扳€﹂柣鐐叉閸屸晵9.1.0.1 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷妤犵偛鍟块悾銊ф嫚娴gǹ鐓栭悗鐟扳€﹂柣鐐叉閸屸晵9.1.0.1 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
婵炲鍏橀埀顒佷亢閻﹀宕氶崨濠傤杹闁哄牐娅f晶锟�(e婵炲鍏橀埀顒佷亢閸岋拷)8.71 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷婵炲鍏橀埀顒佷亢閻﹀宕氶崨濠傤杹闁哄牐娅f晶锟�(e婵炲鍏橀埀顒佷亢閸岋拷)8.71 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
濞戞挻绮嶉幑锝囨嫚娴gǹ鐓栧☉鎾寸矋閹癸綁鎮堕崱姘亶4.0.5 閻庣懓顦畷婊堟偋閿燂拷濞戞挻绮嶉幑锝囨嫚娴gǹ鐓栧☉鎾寸矋閹癸綁鎮堕崱姘亶4.0.5 閻庣懓顦畷婊堟偋閿燂拷
濞戞搩鍙冮幗杈╂嫚娴gǹ鐓栫紒澶庮嚙婵晠鎮堕崱姘亶閺夌儐鍨▎锟�6.02.010 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷濞戞搩鍙冮幗杈╂嫚娴gǹ鐓栫紒澶庮嚙婵晠鎮堕崱姘亶閺夌儐鍨▎锟�6.02.010 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁告閰g欢宕囨嫚娴gǹ鐓栭悘蹇撶箻閸i箖骞嶇€n偅绨氶柣鐐叉閸屻劍娼娆愵偨3.2.4 閻庣懓顦畷婊堟偋閿燂拷闁告閰g欢宕囨嫚娴gǹ鐓栭悘蹇撶箻閸i箖骞嶇€n偅绨氶柣鐐叉閸屻劍娼娆愵偨3.2.4 閻庣懓顦畷婊堟偋閿燂拷
闁归潧顑嗗┃鈧梺鐐劶椤拷
缂佸倸绻愮紓鎾诲礃濠婂嫭缍戝ǎ鍥风磿閺併倗绮堥悙顒€顤侀柡鍫熸そ閹借京鎮扮仦绛嬪悅闁规挳顥撻锟�2.3.4 閻庣懓顦畷婊堟偋閿燂拷缂佸倸绻愮紓鎾诲礃濠婂嫭缍戝ǎ鍥风磿閺併倗绮堥悙顒€顤侀柡鍫熸そ閹借京鎮扮仦绛嬪悅闁规挳顥撻锟�2.3.4 閻庣懓顦畷婊堟偋閿燂拷
闁哄嫭鎸搁崺妤佹媴濠婂棭娼掑Λ鐗堝灥婢光偓閺夊牊鍙p4.1.16閻庣懓顦畷婊堟偋閿燂拷闁哄嫭鎸搁崺妤佹媴濠婂棭娼掑Λ鐗堝灥婢光偓閺夊牊鍙p4.1.16閻庣懓顦畷婊堟偋閿燂拷
闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷
濞戞搩鍘煎ù妤€顔忛妷銉︽珜闂佺偓鍎奸、鎴﹀箥鐎n偅绨氶梺鐐劶椤㈡叧ppV7.0.1.2.5 閻庣懓顦畷婊堟偋閿燂拷濞戞搩鍘煎ù妤€顔忛妷銉︽珜闂佺偓鍎奸、鎴﹀箥鐎n偅绨氶梺鐐劶椤㈡叧ppV7.0.1.2.5 閻庣懓顦畷婊堟偋閿燂拷
濞戞搩鍘煎ù妤呮煣閹偊鏀介柟闈涱儐濠р偓闂佺偓鍎奸、鎴犫偓骞垮灪閸╂稓绮╅敓锟�7.2.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷濞戞搩鍘煎ù妤呮煣閹偊鏀介柟闈涱儐濠р偓闂佺偓鍎奸、鎴犫偓骞垮灪閸╂稓绮╅敓锟�7.2.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
濞村吋鍨垮Λ浠嬫儎婵犲啯顏�
闁煎灚宕橀鍡涙偖鎼淬劌顨欓弶鍫濆綖濮瑰骞嶇€n偅绨氶柣妤€婀�2.3.0.0 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闁煎灚宕橀鍡涙偖鎼淬劌顨欓弶鍫濆綖濮瑰骞嶇€n偅绨氶柣妤€婀�2.3.0.0 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁告棁灏崹鍫曞炊閵忕姷鏆柡鍌濐潐椤掓粓鎮ч崼鐔奉杹婵炴挾顏�1.2.1閻庤蓱閺岀喖鎮ч敓锟�闁告棁灏崹鍫曞炊閵忕姷鏆柡鍌濐潐椤掓粓鎮ч崼鐔奉杹婵炴挾顏�1.2.1閻庤蓱閺岀喖鎮ч敓锟�
濡ゆぜ鍎甸妶鎸庛仈閵娾晛顨欓弶鈺傜☉鐎垫煡寮悩缁橆€欓梺鍊熷吹閻撳爼鎮ч崸锟�7.8.0.0閻庣懓顦畷婊堟偋閿燂拷濡ゆぜ鍎甸妶鎸庛仈閵娾晛顨欓弶鈺傜☉鐎垫煡寮悩缁橆€欓梺鍊熷吹閻撳爼鎮ч崸锟�7.8.0.0閻庣懓顦畷婊堟偋閿燂拷
婵$偛绉舵晶鎸庡緞瑜庨崹顒勫磽闂堟稒顢嶉柛蹇嬪妽濡叉垿寮伴敓锟�1.0.91 閻庣懓顦畷婊堟偋閿燂拷婵$偛绉舵晶鎸庡緞瑜庨崹顒勫磽闂堟稒顢嶉柛蹇嬪妽濡叉垿寮伴敓锟�1.0.91 閻庣懓顦畷婊堟偋閿燂拷
闁告柣鍔嬬紞鏃備焊閸曨偄姣�
闁革箓顣︾粭鍛村春鎼达絿宕愰柛鎴炴閳ь剙宕憈闁绘鎷�1.6.3 閻庤蓱閺岀喖鎮ч敓锟�闁革箓顣︾粭鍛村春鎼达絿宕愰柛鎴炴閳ь剙宕憈闁绘鎷�1.6.3 閻庤蓱閺岀喖鎮ч敓锟�
閻熶礁鎳愰弫鎶芥嚂閺冨倹绀�1.325.157 閻庣懓顦畷婊堟偋閿燂拷閻熶礁鎳愰弫鎶芥嚂閺冨倹绀�1.325.157 閻庣懓顦畷婊堟偋閿燂拷
闁革讣绲鹃弸鐔哥珶椤愶絾袝闁活厹鍨藉▔锔剧磼閹硷拷4.2.1 閻庣懓顦畷婊堟偋閿燂拷闁革讣绲鹃弸鐔哥珶椤愶絾袝闁活厹鍨藉▔锔剧磼閹硷拷4.2.1 閻庣懓顦畷婊堟偋閿燂拷
闂侇剦鍠栭妵锟�3D闁归潧顑嗛悥锟�1.0.9閻庣懓顦畷婊堟偋閿燂拷闂侇剦鍠栭妵锟�3D闁归潧顑嗛悥锟�1.0.9閻庣懓顦畷婊堟偋閿燂拷
濠靛妫冨Σ璇层€掗崨濠傜亞
閻庣懓顦畷婊冾渻瀹ュ洤鈷栧鍫嗗嫬鐏涢柛宥夋涧濡楋拷2濮掓稒鍨跺▓顐﹀籍閺堥潧鏁╁ǎ鍥跺枟閺佸ジ鎮ч崷锟�1.9.5 闁哄牃鍋撻柡鍌涘婢э拷閻庣懓顦畷婊冾渻瀹ュ洤鈷栧鍫嗗嫬鐏涢柛宥夋涧濡楋拷2濮掓稒鍨跺▓顐﹀籍閺堥潧鏁╁ǎ鍥跺枟閺佸ジ鎮ч崷锟�1.9.5 闁哄牃鍋撻柡鍌涘婢э拷
濞戞棁椴搁弸鐔烘啿閹稿海鍩�2v1.0.150閻庣懓顦畷婊堟偋閿燂拷濞戞棁椴搁弸鐔烘啿閹稿海鍩�2v1.0.150閻庣懓顦畷婊堟偋閿燂拷
濞e洦绻傚畷濂告媰濠靛棗妞�3闁哄啰濞€濡炬椽鏌﹂懡銈囧従闁哄牃鍋撻柡鍌涘婢ф2.0.0.1 閻庣懓顦畷婊堟偋閿燂拷濞e洦绻傚畷濂告媰濠靛棗妞�3闁哄啰濞€濡炬椽鏌﹂懡銈囧従闁哄牃鍋撻柡鍌涘婢ф2.0.0.1 閻庣懓顦畷婊堟偋閿燂拷
闁告瑱缍€椤d即鎳熼柆宥嗙闁告娲樺┃鈧柣妤嬫嫹1.2.0 閻庣懓顦畷婊堟偋閿燂拷闁告瑱缍€椤d即鎳熼柆宥嗙闁告娲樺┃鈧柣妤嬫嫹1.2.0 閻庣懓顦畷婊堟偋閿燂拷
閻忓繐绻愰惃顒勫礃濞戞ɑ绀嬮悗鐟邦槸瀹曟粓鎮ч敓锟�2.7.4 闁哄啰濞€濡炬椽鏌岄幋婵堫伈濞e浂鍠楅弫濂告偋閿燂拷閻忓繐绻愰惃顒勫礃濞戞ɑ绀嬮悗鐟邦槸瀹曟粓鎮ч敓锟�2.7.4 闁哄啰濞€濡炬椽鏌岄幋婵堫伈濞e浂鍠楅弫濂告偋閿燂拷
閻犙勭濠у懐绮╅悙鏉懳�
闁谎嗩嚙閸栨鎸у☉婊勭盃2闁归潧顑嗛悥锟�1.47.1  閻庣懓顦畷婊堟偋閿燂拷闁谎嗩嚙閸栨鎸у☉婊勭盃2闁归潧顑嗛悥锟�1.47.1 閻庣懓顦畷婊堟偋閿燂拷
濞戞挴鍋撻悹褔鏀卞ḿ鍨槹閻愯埖绨犻悗鐟邦槸瀹曟粓鎮ч崸锟�2.9.14 闁哄牃鍋撻柡鍌涘婢э拷濞戞挴鍋撻悹褔鏀卞ḿ鍨槹閻愯埖绨犻悗鐟邦槸瀹曟粓鎮ч崸锟�2.9.14 闁哄牃鍋撻柡鍌涘婢э拷
閻犵儤鍨肩粣鍥础閳ヨ尙顏查弶鐑囬檮婢ф粓寮甸搹鐟邦暭閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣紇1.16.2 閻庣懓顦畷婊堟偋閿燂拷閻犵儤鍨肩粣鍥础閳ヨ尙顏查弶鐑囬檮婢ф粓寮甸搹鐟邦暭閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣紇1.16.2 閻庣懓顦畷婊堟偋閿燂拷
闁绘瑥鍊块崳瑙勵槹濞嗘帗绨�8闁哄绶氶埀顒傚枎閸i攱绂嶉幋婊勫弿闁衡偓閸︻厼顣�(闁稿繐绉甸弳鐔煎箲椤旂厧鐦�)v4.6.0j 闂佸弶鍨电粩鐢稿籍閻樼粯顎欓柣妤嬫嫹闁绘瑥鍊块崳瑙勵槹濞嗘帗绨�8闁哄绶氶埀顒傚枎閸i攱绂嶉幋婊勫弿闁衡偓閸︻厼顣�(闁稿繐绉甸弳鐔煎箲椤旂厧鐦�)v4.6.0j 闂佸弶鍨电粩鐢稿籍閻樼粯顎欓柣妤嬫嫹
闁谎冨綖缁犱即宕¢崘顏勪粡闁硅娲熸總锟�2021闁哄牃鍋撻柡鍌涘婢э拷5.78 閻庣懓顦畷婊堟偋閿燂拷闁谎冨綖缁犱即宕¢崘顏勪粡闁硅娲熸總锟�2021闁哄牃鍋撻柡鍌涘婢э拷5.78 閻庣懓顦畷婊堟偋閿燂拷
閻熸瑦甯熸竟濠囧箥椤旂晫宸�
婵⿵绠戞径鐔煎礈閹达絽鐏﹂柤鏉挎噹瑜板骞€娴e搫顣�1.0.1.2閻庣懓顦畷婊堟偋閿燂拷婵⿵绠戞径鐔煎礈閹达絽鐏﹂柤鏉挎噹瑜板骞€娴e搫顣�1.0.1.2閻庣懓顦畷婊堟偋閿燂拷
濞寸姵鐟ラ。銊﹀閻樹警鍤況o濠㈣泛绉撮崣瀵糕偓鐟邦槸瀹曟粓鎮ч敓锟�1.20.3闁哄牃鍋撻柡鍌涘婢э拷濞寸姵鐟ラ。銊﹀閻樹警鍤況o濠㈣泛绉撮崣瀵糕偓鐟邦槸瀹曟粓鎮ч敓锟�1.20.3闁哄牃鍋撻柡鍌涘婢э拷
婵⿵绠戞径鐔烘嫚濞戞鑸堕柟闈涱儐閻栧爼鎮ч敓锟�1.3.6 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷婵⿵绠戞径鐔烘嫚濞戞鑸堕柟闈涱儐閻栧爼鎮ч敓锟�1.3.6 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁绘粌顑堥埀顒€鎳撳畷鎶芥嚀閳х悤3.72.1.1 閻庣懓顦畷婊堝嫉閳ь剟寮弶璺ㄦ毉闁哄倸婀辨晶锟�闁绘粌顑堥埀顒€鎳撳畷鎶芥嚀閳х悤3.72.1.1 閻庣懓顦畷婊堝嫉閳ь剟寮弶璺ㄦ毉闁哄倸婀辨晶锟�
閻犲绀侀宥囦焊韫囨碍绨犵€殿喚鍎ゆ晶婊堝嫉閾忕懓顣紇1.0.49 閻庣懓顦畷婊堟偋閿燂拷閻犲绀侀宥囦焊韫囨碍绨犵€殿喚鍎ゆ晶婊堝嫉閾忕懓顣紇1.0.49 閻庣懓顦畷婊堟偋閿燂拷
缂侇垵宕电划鐑樻姜椤栨瑦顐�
mac缁惧彞鑳跺ú蹇涘礆閸℃闅樼€规悶鍎遍崣锟�(Paragon Camptune X)V10.8.12閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�mac缁惧彞鑳跺ú蹇涘礆閸℃闅樼€规悶鍎遍崣锟�(Paragon Camptune X)V10.8.12閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁兼槒顫夐悘澶愬箼瀹ュ嫮绋婄紒顖濆吹缁瘲ACOSX 10.9.4 Mavericks閻庣懓鑻崣蹇涘礂瀹ュ牆鐎柣妤嬫嫹闁兼槒顫夐悘澶愬箼瀹ュ嫮绋婄紒顖濆吹缁瘲ACOSX 10.9.4 Mavericks閻庣懓鑻崣蹇涘礂瀹ュ牆鐎柣妤嬫嫹
Rar閻熸瑱绲界敮鍥礆閳轰焦鐝ac闁绘婢�1.4 閻庤蓱閺岀喖宕楀鍫濈€柣妤嬫嫹Rar閻熸瑱绲界敮鍥礆閳轰焦鐝ac闁绘婢�1.4 閻庤蓱閺岀喖宕楀鍫濈€柣妤嬫嫹
Mac閻庣懓顦畷婊兾熼埄鍐ㄧ彲闁革綇鎷�(ARC Welder)v1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�Mac閻庣懓顦畷婊兾熼埄鍐ㄧ彲闁革綇鎷�(ARC Welder)v1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Charles for MacV3.9.3閻庤蓱閺岀喖鎮ч敓锟�Charles for MacV3.9.3閻庤蓱閺岀喖鎮ч敓锟�
缂傚啯鍨圭划璺侯啅閵夈儱寰�
闁瑰吋绮庣€氬秴霉韫囨凹娼旈柛锝傛殨ac闁绘婢�5.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闁瑰吋绮庣€氬秴霉韫囨凹娼旈柛锝傛殨ac闁绘婢�5.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闂佹寧鍔栧畵搴b偓骞垮灪閸╂稓绮╅惀鐞闁绘婀�1.33閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闂佹寧鍔栧畵搴b偓骞垮灪閸╂稓绮╅惀鐞闁绘婀�1.33閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闊浂鍋嗘晶鐢縜c闁绘婢�1.3.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闊浂鍋嗘晶鐢縜c闁绘婢�1.3.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁哄鑳堕崑锝嗙閺冨倻鎳塎ac闁绘鎷�7.13婵繐绲界槐锟犳偋閿燂拷闁哄鑳堕崑锝嗙閺冨倻鎳塎ac闁绘鎷�7.13婵繐绲界槐锟犳偋閿燂拷
濠殿垱甯婄紞瀣啅閵夈儱寰�
Apple Logic Pro xV10.3.2Apple Logic Pro xV10.3.2
Adobe Premiere Pro CC 2017 mac闁绘婢�11.0.0 濞戞搩鍘介弸鍐偋閿燂拷Adobe Premiere Pro CC 2017 mac闁绘婢�11.0.0 濞戞搩鍘介弸鍐偋閿燂拷
闁告鍟畷鍫ユ濞嗗繑鍎擬ac闁绘婀�9.1.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁告鍟畷鍫ユ濞嗗繑鍎擬ac闁绘婀�9.1.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Mac缂傚啯鍨圭划鍫曟儎鐎涙ɑ灏¢弶鐑嗗灟濞嗭拷(MacTV)v0.121 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�Mac缂傚啯鍨圭划鍫曟儎鐎涙ɑ灏¢弶鐑嗗灟濞嗭拷(MacTV)v0.121 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Adobe Fireworks CS6 Mac闁绘婀慡6閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢э拷Adobe Fireworks CS6 Mac闁绘婀慡6閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢э拷
闁搞儲鍎抽懜浼村炊閹冨壖
AutoCAD2015 mac濞戞搩鍘介弸鍐偋閸喐鎷眝1.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�AutoCAD2015 mac濞戞搩鍘介弸鍐偋閸喐鎷眝1.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
Adobe Photoshop cs6 mac闁绘婢�13.0.3 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹Adobe Photoshop cs6 mac闁绘婢�13.0.3 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹
Mac闁活厹鍨介崳铏圭磼濡儤绂堥弶鐑嗗灟濞嗭拷(Sketch mac)v3.3.2 濞戞搩鍘介弸鍐偋閿燂拷Mac闁活厹鍨介崳铏圭磼濡儤绂堥弶鐑嗗灟濞嗭拷(Sketch mac)v3.3.2 濞戞搩鍘介弸鍐偋閿燂拷
Adobe After Effects cs6 mac闁绘婢�1.0濞戞搩鍘介弸鍐偋閿燂拷Adobe After Effects cs6 mac闁绘婢�1.0濞戞搩鍘介弸鍐偋閿燂拷
Adobe InDesign cs6 mac1.0 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹Adobe InDesign cs6 mac1.0 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹
閹煎瓨姊婚弫銈嗘姜椤栨瑦顐�
Mac闁绘鐗嗛幓鈺呭箻閿燂拷1.1.26 閻庤蓱閺岀喎顫㈤敐鍛闁绘婧俤mg]Mac闁绘鐗嗛幓鈺呭箻閿燂拷1.1.26 閻庤蓱閺岀喎顫㈤敐鍛闁绘婧俤mg]
Mac閻犲洩顕ч崯鎻楾FS(Paragon NTFS for Mac)12.1.62 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�Mac閻犲洩顕ч崯鎻楾FS(Paragon NTFS for Mac)12.1.62 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
閺夆晛鎳樺ù锟�10 for macv3.4.1.4368 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�閺夆晛鎳樺ù锟�10 for macv3.4.1.4368 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Mac濞戞挸顑嗗〒璺侯嚕閸濆嫨浜i柣銊ュ闁绱掗悢鍝ヮ伕闁荤偛妫楁导鎰板礂閿燂拷(CleanMyMac for mac)v3.1.1 婵繐绲界槐锟犳偋閿燂拷Mac濞戞挸顑嗗〒璺侯嚕閸濆嫨浜i柣銊ュ闁绱掗悢鍝ヮ伕闁荤偛妫楁导鎰板礂閿燂拷(CleanMyMac for mac)v3.1.1 婵繐绲界槐锟犳偋閿燂拷
闁兼槒顫夐悘濉€ootCamp5.1.5640 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁兼槒顫夐悘濉€ootCamp5.1.5640 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
ios缂佲偓閸欍儲鍞夐柤鍗烇工閵囷拷
鐎甸偊鍠曟穱濂縫ad闁绘鎷�2020v7.0.12 閻庤蓱閺岀喖鎮ч敓锟�鐎甸偊鍠曟穱濂縫ad闁绘鎷�2020v7.0.12 閻庤蓱閺岀喖鎮ч敓锟�
iphone闁归潧顑嗗┃鈧琿q2021v8.5.0 閻庤蓱閺岀喖鎮ч敓锟�iphone闁归潧顑嗗┃鈧琿q2021v8.5.0 閻庤蓱閺岀喖鎮ч敓锟�
闁哄嫭鎸锋穱濂縊S闁绘婢�7.3.13 iPhone闁绘鎷�闁哄嫭鎸锋穱濂縊S闁绘婢�7.3.13 iPhone闁绘鎷�
闂傚嫬鐭傚锟� iphoneV8.32.4 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闂傚嫬鐭傚锟� iphoneV8.32.4 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁告鍟版晶锟� iphone闁绘鎷�9.2.5 閻庤蓱閺岀喖鎮ч敓锟�闁告鍟版晶锟� iphone闁绘鎷�9.2.5 閻庤蓱閺岀喖鎮ч敓锟�
ios闁汇垻鍠愬鍧楀嫉瀹ュ懎顫�
99濞戞挶鍎甸埀顒€顦板〒鍫曞棘閹殿喖顣糣1.3.699濞戞挶鍎甸埀顒€顦板〒鍫曞棘閹殿喖顣糣1.3.6
闊浂鍋嗘晶鐢禤hone闁绘鎷�5.7.3 閻庤蓱閺岀喖鎮ч敓锟�闊浂鍋嗘晶鐢禤hone闁绘鎷�5.7.3 閻庤蓱閺岀喖鎮ч敓锟�
婵烇絾锚閻わ拷 for iPhonev9.5.15 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�婵烇絾锚閻わ拷 for iPhonev9.5.15 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
濠⒀佸姀閹舵寰勯埡鍌滄瘻 for iphoneV7.5.3閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣糏PA濠⒀佸姀閹舵寰勯埡鍌滄瘻 for iphoneV7.5.3閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣糏PA
閻犲鏀遍悺鏇㈠捶閺夋寧绂坕phone(Google Maps)4.54  濞戞搩鍘介弸鍐偋閿燂拷閻犲鏀遍悺鏇㈠捶閺夋寧绂坕phone(Google Maps)4.54 濞戞搩鍘介弸鍐偋閿燂拷
ios鐟滀即浜堕悡鑸电箾閸欐ḿ顔�
闊浂鍋呴幐閬嶆嚐鐟欏嫮浜柣妤€婀�3.3.35 閻庤蓱閺岀喖鎮ч崷绯筽a]闊浂鍋呴幐閬嶆嚐鐟欏嫮浜柣妤€婀�3.3.35 閻庤蓱閺岀喖鎮ч崷绯筽a]
闁告艾顦幃蹇氥亹闁秶鍙鹃柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�1.0.1017 闁兼槒顫夐悘濉眕ad闁绘鎷�闁告艾顦幃蹇氥亹闁秶鍙鹃柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�1.0.1017 闁兼槒顫夐悘濉眕ad闁绘鎷�
鐟滀即浜堕悡鍫曞礂閸儲鏁遍柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�2.8.0 閻庤蓱閺岀喖鎮ч敓锟�鐟滀即浜堕悡鍫曞礂閸儲鏁遍柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�2.8.0 閻庤蓱閺岀喖鎮ч敓锟�
闁哄倹顨婃總鏃堟儎鐎涙ɑ灏¢悗骞垮灪閸╂稓绮╅惀鐖媠闁绘鎷�7.0.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁哄倹顨婃總鏃堟儎鐎涙ɑ灏¢悗骞垮灪閸╂稓绮╅惀鐖媠闁绘鎷�7.0.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闂佷即顥撶€氬秹妫呴崗鍛唶 for iPhonev10.9.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闂佷即顥撶€氬秹妫呴崗鍛唶 for iPhonev10.9.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
ios闁搞儲鍎抽懜浼村炊閹冨壖
How old do I look ios闁绘鎷�1.02 閻庤蓱閺岀喖鎮ч敓锟�How old do I look ios闁绘鎷�1.02 閻庤蓱閺岀喖鎮ч敓锟�
缂傚洤楠稿ù妯肩矓閳ь剛绮旈埀鐞睵hone闁绘婀�8.6.62 闁哄牃鍋撻柡鍌滃椤掓粌顕h箛鏇烆暭缂傚洤楠稿ù妯肩矓閳ь剛绮旈埀鐞睵hone闁绘婀�8.6.62 闁哄牃鍋撻柡鍌滃椤掓粌顕h箛鏇烆暭
婵ɑ娼欏畵鍐⒓閻斿吋姣愰柤鏄忣潐閻忓鎮ч崸锟�1.0.0婵ɑ娼欏畵鍐⒓閻斿吋姣愰柤鏄忣潐閻忓鎮ч崸锟�1.0.0
濠㈠灈鏅涢妵濉搁柛銉х┉pad闁绘鎷�5.7.4 閻庤蓱閺岀喖鎮ч敓锟�濠㈠灈鏅涢妵濉搁柛銉х┉pad闁绘鎷�5.7.4 閻庤蓱閺岀喖鎮ч敓锟�
闊浂鍋呮晶娓媜s闁绘婀�9.6.30 閻庤蓱閺岀喖鎮ч敓锟�闊浂鍋呮晶娓媜s闁绘婀�9.6.30 閻庤蓱閺岀喖鎮ч敓锟�
ios婵炴潙绻楅~宥咁啅閵夈儱寰�
闁煎啿鑻€垫﹢宕烽弶鎸庣ios闁绘鎷�1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁煎啿鑻€垫﹢宕烽弶鎸庣ios闁绘鎷�1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁归潧顑嗗┃鈧悗鐟邦槸閸欏繘宕濋埡鍌氼杹闁兼槒顫夐悘澶愭偋閸э拷1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁归潧顑嗗┃鈧悗鐟邦槸閸欏繘宕濋埡鍌氼杹闁兼槒顫夐悘澶愭偋閸э拷1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
UC婵炴潙绻楅~宥夊闯閳猴拷113.5.5.1555濞戞搩鍘介弸鍐偋閿燂拷UC婵炴潙绻楅~宥夊闯閳猴拷113.5.5.1555濞戞搩鍘介弸鍐偋閿燂拷
360婵炴潙绻楅~宥夊闯閳╁ for iPadV4.1.3  婵繐绲界槐锟犳偋閿燂拷360婵炴潙绻楅~宥夊闯閳╁ for iPadV4.1.3 婵繐绲界槐锟犳偋閿燂拷
iPhone闁归潧顑嗗┃鈧琎Q婵炴潙绻楅~宥夊闯閳猴拷8.9.1 閻庤蓱閺岀喖鎮ч敓锟�iPhone闁归潧顑嗗┃鈧琎Q婵炴潙绻楅~宥夊闯閳猴拷8.9.1 閻庤蓱閺岀喖鎮ч敓锟�

首頁編程開發(fā)java → 使用Castor工具完成Java對象與XML之間的相互轉(zhuǎn)換

使用Castor工具完成Java對象與XML之間的相互轉(zhuǎn)換

前往專題相關(guān)文章發(fā)表評論 來源:西西整理時間:2011/4/25 16:01:24字體大�。�A-A+

作者:西西點擊:222次評論:0次標簽: java xml

  • 類型:編程工具大�。�225.4M語言:中文 評分:10.0
  • 標簽:
立即下載

這里將介紹Castor來完成Java對象到xml的相互轉(zhuǎn)換。它是怎么樣轉(zhuǎn)換的?和前面不同的是castor可以用一個mapping.xml文件來描述轉(zhuǎn)換后的Java對象的xml基本形態(tài),類似于xStream的annotation,這點還是非常不錯的。下面我們就來看看Castor是怎么樣完成Java對象到XML之間的相互轉(zhuǎn)換吧。

相關(guān)鏈接 版本說明 下載地址
Java SE Development Kit 7 官方正式版 查看
Java SE Runtime Environment(JRE7 64位版) 71多語官方安裝版 查看
JD-GUI(Java反編譯工具 綠色免費版 查看
JDK 6(Java SE Development Kit) 64位版 查看
Java SE Development Kit (JDK7) 7u67官方正式版 查看
Java Runtime Environment(JRE7) 官方最新版 查看

一、 準備工作

1、 官方資源

本示例會運用到如下依賴包(jar包):

資源及jar包下載:http://www.castor.org/download.html

junit jar下載地址:

https://github.com/KentBeck/junit/downloads

關(guān)于官方提供的mapping配置相關(guān)示例、文檔:

http://www.castor.org/xml-mapping.html

ibm提供的castor方面的文檔資料:

http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&client=aff-cs-360se&hs=Gon&biw=1349&bih=603&q=castor+site%3Awww.ibm.com%2Fdeveloperworks%2Fcn%2Fxml%2F&aq=f&aqi=&aql=&oq=

2、 程序測試運行代碼

package com.hoo.test;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.mapping.MappingException;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.ValidationException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.hoo.entity.Account;
import com.hoo.entity.AccountArray;
import com.hoo.entity.Birthday;
import com.hoo.entity.ListBean;
import com.hoo.entity.MapBean;

/**
 * <b>function:</b>Castor完成Java對象到XML的相互轉(zhuǎn)換
 * 依賴jar: castor-1.3.jar
 * castor-1.3-core.jar
 * junit-4.8.2.jar
 * log4j-1.2.16.jar
 * commons-logging.jar
 * @author hoojo
 * @createDate 2011-4-21 下午07:57:26
 * @file CastorTest.java
 * @package com.hoo.test
 * @project WebHttpUtils
 * @blog http://blog.csdn.net/IBM_hoojo
 * @email hoojo_@126.com
 * @version 1.0
 */
public class CastorTest {

    private Account bean = null;
    private Mapping mapping = new Mapping();
    private StringWriter writer = null;
    private StringReader reader = null;

    @Before
    public void init() {
        bean = new Account();
        bean.setAddress("北京");
        bean.setEmail("email");
        bean.setId(1);
        bean.setName("jack");
        Birthday day = new Birthday();
        day.setBirthday("2010-11-22");
        bean.setBirthday(day);

        try {
            /**
             * 加載mapping.xml,此文件是對需要轉(zhuǎn)換的Java對象的配置描述,
             * 即:轉(zhuǎn)換后的Java對象的xml內(nèi)容的轉(zhuǎn)換規(guī)則
             */
            mapping.loadMapping(System.getProperty("user.dir") + "\\src\\mapping.xml");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MappingException e) {
            e.printStackTrace();
        }
    }

    @After
    public void destory() {
        bean = null;
        mapping = null;
        try {
            if (writer != null) {
                writer.flush();
                writer.close();
            }
            if (reader != null) {
                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.gc();
    }

    public void fail(Object o) {
        System.out.println(o);
    }

    public void failRed(Object o) {
        System.err.println(o);
    }
}


Mapping對象可以完成Java對象到XML的編組和解組,它需要先設(shè)定一個mapping.xml,通過xml對JavaObject的描述。來完成JavaObject的編組、解組工作。

3、 看看即將被轉(zhuǎn)換的JavaEntity代碼

Account

package com.hoo.entity;

public class Account {
    private int id;
    private String name;
    private String email;
    private String address;
    private Birthday birthday;

    //setter、getter
    @Override
    public String toString() {
        return this.id + "#" + this.name + "#" + this.email + "#" + this.address + "#" + this.birthday;
    }
}


Birthday

package com.hoo.entity;

public class Birthday {
    private String birthday;

    public Birthday(String birthday) {
        super();
        this.birthday = birthday;
    }
    //getter、setter
    public Birthday() {}

    @Override
    public String toString() {
        return this.birthday;
    }
}


AccountArray

package com.hoo.entity;

public class AccountArray {
    private Account[] accounts;
    private int size;
    public int getSize() {
        size = accounts.length;
        return size;
    }
    public void setSize(int size) {
        this.size = size;
    }
    public Account[] getAccounts() {
        return accounts;
    }
    public void setAccounts(Account[] accounts) {
        this.accounts = accounts;
    }
}


ListBean

package com.hoo.entity;

import java.util.List;

public class ListBean {
    private String name;
    private List list;
    //setter、getter
}


MapBean

package com.hoo.entity;

import java.util.Map;

public class MapBean {
    private Map<String, Object> map;

    public Map<String, Object> getMap() {
        return map;
    }
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }
}


二、 編組JavaObject到XML

1、 將JavaBean編組,轉(zhuǎn)換成XML

/**
 * <b>function:</b>將Javabean編組,轉(zhuǎn)換成XML
 * @author hoojo
 * @createDate 2011-4-22 下午12:08:48
 */
@Test
public void writeBean2XML() {
    writer = new StringWriter();
    try {
        //編組
        Marshaller.marshal(bean, writer);
        fail(writer);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


代碼很簡單,通過Marshaller的marshal方法來完成Java對象到XML的編組(序列化、轉(zhuǎn)換)工作。

運行后的結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<account id="1"><address>北京</address><email>email</email><name>jack</name>
<birthday><birthday>2010-11-22</birthday></birthday></account>


2、 將List集合轉(zhuǎn)換成XML

/**
 * <b>function:</b>將List轉(zhuǎn)換成xml
 * @author hoojo
 * @createDate 2011-4-22 下午12:11:00
 */
@Test
public void writeList2XML() {
    writer = new StringWriter();
    List<Account> list = new ArrayList<Account>();
    list.add(bean);
    bean = new Account();
    bean.setName("tom");
    bean.setId(223);
    list.add(bean);
    try {
        Marshaller.marshal(list, writer);
        fail(writer);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


運行后,結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<array-list>
<account xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com" id="1" xsi:type="java:com.hoo.entity.Account">
<address>北京</address><email>email</email><name>jack</name><birthday><birthday>2010-11-22</birthday></birthday></account>
<account xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com" id="223" xsi:type="java:com.hoo.entity.Account">
<name>tom</name>
</account>
</array-list>


怎么樣,List存放的是2個Account吧。

3、 將Array數(shù)組轉(zhuǎn)換成XML

/**
 * <b>function:</b>將Array數(shù)組轉(zhuǎn)換成XML
 * @author hoojo
 * @createDate 2011-4-22 下午12:11:25
 */
@Test
public void writeArray2XML() {
    writer = new StringWriter();
    Account[] acc = new Account[2];
    acc[0] = bean;
    bean = new Account();
    bean.setName("tom");
    bean.setId(223);
    acc[1] = bean;

    try {
        Marshaller.marshal(acc, writer);
        fail(writer);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<array><account id="1"><address>北京</address><email>email</email><name>jack</name>
<birthday><birthday>2010-11-22</birthday></birthday></account>
<account id="223"><name>tom</name></account></array>


4、 轉(zhuǎn)換其他Java類型

/**
 * <b>function:</b>將Java常用類型編組成xml
 * @author hoojo
 * @createDate 2011-4-22 下午12:11:44
 */
@Test
public void writeObject2XML() {
    writer = new StringWriter();
    try {
        Marshaller.marshal(true, writer);
        Marshaller.marshal(9527, writer);
        Marshaller.marshal(2.2f, writer);
        Marshaller.marshal(1.11d, writer);
        Marshaller.marshal("lucy", writer);
        Marshaller.marshal("hello castor".getBytes(), writer);
        Marshaller.marshal(new char[] { 'a', 'b', 'c' }, writer);
        Marshaller.marshal(new String[] { "hi", "spring", "castor" }, writer);
        fail(writer);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<boolean>true</boolean><?xml version="1.0" encoding="UTF-8"?>
<integer>9527</integer><?xml version="1.0" encoding="UTF-8"?>
<float>2.2</float><?xml version="1.0" encoding="UTF-8"?>
<double>1.11</double><?xml version="1.0" encoding="UTF-8"?>
<string>lucy</string><?xml version="1.0" encoding="UTF-8"?>
<[-b>aGVsbG8gY2FzdG9y</[-b><?xml version="1.0" encoding="UTF-8"?>
<array><character>a</character><character>b</character><character>c</character></array><?xml version="1.0" encoding="UTF-8"?>
<array><string>hi</string><string>spring</string><string>castor</string></array>


都是類型為節(jié)點名稱,值為text。但是這里并沒有出現(xiàn)Map,如果轉(zhuǎn)換Map需要mapping進行配置。下面再慢慢道來-.-

5、 將xml解組成JavaBean

/**
 * <b>function:</b>將XML內(nèi)容,解組成JavaBean
 * @author hoojo
 * @createDate 2011-4-22 下午12:12:14
 */
@Test
public void readXML2Bean() {

    String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                    "<account id=\"1\"><address>北京</address>" +
                    "<name>jack</name><email>email</email>" +
                    "<birthday><birthday>2010-11-22</birthday></birthday></account>";
    reader = new StringReader(xml);

    try {
        //解組
        Account account = (Account) Unmarshaller.unmarshal(Account.class, reader);
        fail(account);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (ValidationException e) {
        e.printStackTrace();
    }
}


結(jié)果如下:

1#jack#email#北京#2010-11-22


其他的類型,如:map、list、array都不能成功解組。因為這些類型里面有很多系統(tǒng)默認的xml描述。但是利用mapping和自定義JavaBean就可以成功編組和解組了。下面看看mapping是怎么玩轉(zhuǎn)這些類型的。

三、 利用mapping配置,編組JavaObject、解組XML

最開始的init方法就提供了mapping,讓我們對mapping這個配置有了大概的了解。下面我們將詳細介紹mapping是個什么:

1、 在此之前我們設(shè)置過mapping.xml。如果不設(shè)置,肯定是不能轉(zhuǎn)換成我們想要的XML的。那么,mapping.xml配置文件是怎么配置Account這個對象的呢?

mapping.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
<mapping>
    <class name="com.hoo.entity.Account" auto-complete="true">
        <map-to xml="Account"/>

        <field name="id" type="integer">
            <bind-xml name="id" node="attribute" />
        </field>

        <field name="name" type="string">
            <bind-xml name="name" node="element" />
        </field>

        <field name="email" type="string">
            <bind-xml name="email" node="element" />
        </field>

        <field name="address" type="string">
            <bind-xml name="address" node="element" />
        </field>

        <field name="birthday" type="com.hoo.entity.Birthday">
            <bind-xml name="生日" node="element" />
        </field>
    </class>

    <class name="com.hoo.entity.Birthday">
        <map-to xml="birthday" />

        <field name="birthday" type="string">
            <bind-xml name="birthday" node="attribute" />
        </field>
    </class>
</mapping>


首先,看看這個xml文檔的根元素是mapping,在mapping中可以配置class。也就是我們要轉(zhuǎn)換的JavaObject的配置描述了。

class元素的name屬性就是配置的JavaObject的classpath路徑了。

關(guān)于class元素的auto-complate屬性,如果這個屬性的值為ture。那么編組后的xml,castor會自動給沒有在mapping配置文件進行配置的屬性自動編組(轉(zhuǎn)換)到xml中。如果為false,那么在mapping配置文件中出現(xiàn)的屬性將在編組后不現(xiàn)在在編組后的xml中。

map-to就是當(dāng)前class編組后的xml文檔的節(jié)點元素名稱。

field就是描述JavaObject中的屬性,name是Java對象的屬性名稱,type是類型。關(guān)于配置的type類型也有規(guī)定,你可以參考:http://www.castor.org/xml-mapping.html的field配置講解。

而field還有其他的屬性配置,如get-method應(yīng)該是getter方法、set-method應(yīng)該是setter的方法、has-mehtod應(yīng)該是hashCode方法,有時候我們不一定要提高getter、setter方法,我們需要用自己的方法名稱來代替setter、getter。如果當(dāng)前field配置的是集合類型,那么你需要給field元素配置collection屬性。

bind-xml就是綁定(編組)成xml后的xml內(nèi)容的描述,name就是編組后xml的節(jié)點元素名稱,node有2個值,分別是attribute、element。attribute是屬性,它會在節(jié)點元素的屬性中顯示,例如:<account id=”2”></account>

而element則是單獨的一個元素,例如:<account><id>2</id></account>

就這個樣子的。

mapping.xml還可以有其他標簽,如:

<include href="other_mapping_file.xml"/>

導(dǎo)入外部xml文件,可以分多個配置。

好了,先將這么多的mapping方面的內(nèi)容。我們還是看看實際運行的示例吧,代碼如下:

/**
 * <b>function:</b>將XML內(nèi)容解組成Java對象
 * @author hoojo
 * @createDate 2011-4-22 下午12:13:28
 */
@Test
public void bean4Mapping2XML() {
    writer = new StringWriter();
    try {
        //編組
        Marshaller mar = new Marshaller(writer);
        mar.setMapping(mapping);
        mar.marshal(bean);
        fail(writer);

        //解組
        reader = new StringReader(writer.toString());
        Unmarshaller unmar = new Unmarshaller(Account.class);
        unmar.setMapping(mapping);

        Account account = (Account) unmar.unmarshal(reader);
        fail(account);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


運行后結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<Account id="1"><name>jack</name><email>email</email><address>北京</address><生日 birthday="2010-11-22"/></Account>
1#jack#email#北京#2010-11-22


上面的xml的根節(jié)點是Account,這個功勞就來源于mapping配置中的map-to元素,而根節(jié)點的id屬性是有field和bind-xml來完成的。當(dāng)bind-xml的node值為attribute時,就會以屬性的方式顯示。當(dāng)node為element時,就會像后面name、email一樣,以元素名稱顯示。

再看看上面的mapping文件中的Account的配置,有個auto-complate屬性,如果把這個屬性的值設(shè)置成false,會怎么樣?那我們趕緊試試。

沒有發(fā)現(xiàn)上面異樣,但是當(dāng)我們刪除下面配置的filed的時候,就發(fā)現(xiàn)有變化了。

結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<Account><name>jack</name><email>email</email><address>北京</address><生日 birthday="2010-11-22"/></Account>
0#jack#email#北京#2010-11-22


發(fā)現(xiàn)id沒有顯示在xml中,那么我們再將auto-complate的屬性設(shè)置true,會有什么驚喜?

結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<Account id="1"><name>jack</name><email>email</email><address>北京</address><生日 birthday="2010-11-22"/></Account>
1#jack#email#北京#2010-11-22


發(fā)現(xiàn)id又回來了,但是Account的配置中并沒有配置id的field。這是為什么,其實auto-comlate在上面已經(jīng)講過了。Castor在編組時會自動將int類型的屬性,顯示在父元素的屬性中。并且JavaObject中有的屬性沒有在mapping配置文件中配置,castor也會自動將其編組在xml中。

下面我們看看map-to配置的用法,map-to的主要屬性是name,也就是我們把當(dāng)前根元素重命名的名稱。Map-to還有2個屬性可以用,分別是ns-uri、ns-prefix�?疵Q就知道它大概的意識,一個是命名空間的uri另一個則是命名空間的前綴。我們給上面mapping加上這兩個屬性看看。

<map-to xml="Account" ns-uri="http://hoojo.cnblogs.com" ns-prefix="castor"/>

結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<castor:Account xmlns:castor="http://hoojo.cnblogs.com" id="1"><castor:name>jack</castor:name><castor:email>email</castor:email>
<castor:address>北京</castor:address><castor:生日 birthday="2010-11-22"/></castor:Account>
1#jack#email#北京#2010-11-22


發(fā)現(xiàn)了什么?節(jié)點元素都帶上了ns-prefix的值,而根元素則有了xml的ns。

2、 將一段XML格式字符串轉(zhuǎn)換成JavaBean

@Test
public void readBean4Mapping2XML() {
    String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<Account id=\"2241\"><name>jack</name><email>email</email><address>北京</address><生日 birthday=\"2010-11-22\"/></Account>";
    try {
        reader = new StringReader(xml);
        Unmarshaller unmar = new Unmarshaller(Account.class);
        unmar.setMapping(mapping);

        Account account = (Account) unmar.unmarshal(reader);
        fail(account);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


運行后結(jié)果如下:

2241#jack#email#北京#2010-11-22


3、 將XML內(nèi)容解組成Java的Array

/**
 * <b>function:</b>將XML內(nèi)容解組成Java的Array
 * @author hoojo
 * @createDate 2011-4-22 下午12:14:50
 */
@Test
public void array4Mapping2XML() {
    writer = new StringWriter();
    Account[] acc = new Account[2];
    acc[0] = bean;
    bean = new Account();
    bean.setName("tom");
    bean.setId(223);
    acc[1] = bean;
    AccountArray array = new AccountArray();
    array.setAccounts(acc);
    try {
        Marshaller mar = new Marshaller(writer);
        mar.setMapping(mapping);
        mar.marshal(array);
        fail(writer);

        reader = new StringReader(writer.toString());
        Unmarshaller unmar = new Unmarshaller(AccountArray.class);
        unmar.setMapping(mapping);
        array = (AccountArray) unmar.unmarshal(reader);
        fail(array.getSize());
        fail(array.getAccounts()[0]);
        fail(array.getAccounts()[1]);
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


AccountArray的mapping配置如下:

<class name="com.hoo.entity.AccountArray">
    <map-to xml="account-array"/>
    <field name="size" type="int" />
    <field name="accounts" collection="array" type="com.hoo.entity.Account">
        <bind-xml name="accounts" auto-naming="deriveByClass"/>
    </field>
</class>


collection表示是數(shù)組,auto-maming有2中值,一種是類driverByClass,另一種則是driverByField是屬性。

運行后,結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<account-array><size>2</size><Account id="1"><name>jack</name><email>email</email><address>北京</address>
<生日 birthday="2010-11-22"/></Account><Account id="223"><name>tom</name></Account></account-array>
2
1#jack#email#北京#2010-11-22
223#tom#null#null#null


4、 將Map編組、解組成JavaObject

/**
 * <b>function:</b>xml轉(zhuǎn)換成Java的Map
 * @author hoojo
 * @createDate 2011-4-22 下午12:15:18
 */
@Test
public void map4Mapping2XML() {
    writer = new StringWriter();
    MapBean mapBean = new MapBean();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("No1", bean);
    bean = new Account();
    bean.setName("tom");
    bean.setId(223);
    map.put("No2", bean);
    mapBean.setMap(map);

    try {
        Marshaller mar = new Marshaller(writer);
        mar.setMapping(mapping);
        mar.marshal(mapBean);
        fail(writer);

        reader = new StringReader(writer.toString());
        Unmarshaller unmar = new Unmarshaller(MapBean.class);
        unmar.setMapping(mapping);
        mapBean = (MapBean) unmar.unmarshal(reader);
        fail(mapBean.getMap());
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


Mapping配置

<class name="com.hoo.entity.MapBean">
    <field name="map" collection="map">
        <bind-xml name="map">
            <class name="org.exolab.castor.mapping.MapItem">
                <field name="key" type="java.lang.String">
                    <bind-xml name="key" node="attribute" />
                </field>
                <field name="value" type="com.hoo.entity.Account">
                    <bind-xml name="value" auto-naming="deriveByClass"/>
                </field>
            </class>
        </bind-xml>
    </field>
</class>


上面的map配置必須這樣配置,利用org.exolab.castor.mapping.MapItem這個class,完成key、value的配置。

結(jié)果如下:

<?xml version="1.0" encoding="UTF-8"?>
<map-bean><map key="No2"><Account id="223"><name>tom</name></Account></map>
<map key="No1"><Account id="1"><name>jack</name><email>email</email><address>北京</address>
<生日 birthday="2010-11-22"/></Account></map></map-bean>
{No2=223#tom#null#null#null, No1=1#jack#email#北京#2010-11-22}


5、 JavaList編組、解組XML

/**
 * <b>function:</b>List到XML的相互轉(zhuǎn)換
 * @author hoojo
 * @createDate 2011-4-22 下午12:16:04
 */
@SuppressWarnings("unchecked")
@Test
public void listForMapping2XML() {
    writer = new StringWriter();

    List<Account> list = new ArrayList<Account>();
    list.add(bean);
    bean = new Account();
    bean.setName("tom");
    bean.setId(223);
    list.add(bean);

    ListBean listBean = new ListBean();
    listBean.setList(list);
    try {
        Marshaller mar = new Marshaller(writer);
        mar.setMapping(mapping);
        mar.marshal(listBean);
        fail(writer);

        reader = new StringReader(writer.toString());
        Unmarshaller unmar = new Unmarshaller(ListBean.class);
        unmar.setMapping(mapping);
        listBean = (ListBean) unmar.unmarshal(reader);
        fail(listBean.getList().size());
        for (Account acc : (List<Account>)listBean.getList()) {
            fail(acc);
        }
    } catch (MarshalException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


Mapping配置

<class name="com.hoo.entity.ListBean">
    <map-to xml="listBean"/>
    <field name="list" collection="arraylist" type="com.hoo.entity.Account">
        <bind-xml name="beans" auto-naming="deriveByClass"/>
    </field>
</class>


結(jié)果:

<?xml version="1.0" encoding="UTF-8"?>
<listBean><Account id="1"><name>jack</name><email>email</email><address>北京</address>
<生日 birthday="2010-11-22"/></Account><Account id="223"><name>tom</name></Account></listBean>
2
1#jack#email#北京#2010-11-22
223#tom#null#null#null


    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)