WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堝姛缂佺娀绠栭弻宥堫檨闁告挻姘ㄩ幑銏犫槈濞嗘劕顎撻梺鍛婂姇瀵爼骞栭幇顔炬/闁告挆鍕畬闂佸疇顫夐崹鍧楀箖閳哄啠鍋撻崷顓炐㈡い銉︾箞濮婂搫效閸パ€鍋撳Δ鍛;闁规崘顕ф闂佸憡娲﹂崹鎵不濞戙垺鐓曟い鎰剁稻缁€鍐┿亜鎼达紕效婵﹨娅g划娆忊枎閹冨闂備礁鎽滄慨鐢稿礉濞嗘劒绻嗛柣銏⑶圭粈瀣亜閺嶃劏澹橀柛鐐姂濮婃椽妫冨ù銈嗙⊕閹峰懘骞撻幒宥咁棜闂備礁婀遍崕銈夈€冮崱娑樼厱闁圭儤顨嗛悡鏇㈡煛閸ャ儱濡煎ù婊勭矋閵囧嫯绠涢敐鍛睄闂佸搫澶囬埀顒€纾弳鍡涙倵閿濆骸澧伴柡鍡欏█閺屟勫濞嗘垵鍩岄梺闈涙鐢帡锝炲┑瀣亗閹艰揪绲奸悽鑽ょ磽娴h娈曢柛銊ョ仢椤繒绱掑Ο璇差€撶紓浣圭☉椤戝懎鈻撻鐐╂斀妞ゆ梹鏋婚崗顒傜磼閻樿櫕宕岄柕鍡曠椤繈骞囨担鍏夋瀸濠电姷鏁告慨顓㈠磻閹捐秮褰掓晲閸モ斂鈧﹪鏌¢埀顒佺鐎n偆鍘藉┑鈽嗗灡椤戞瑩宕电€n兘鍋撶憴鍕仩闁稿氦绮鹃悘鍐⒑缂佹◤顏勵嚕閸洖鐤柣鎰暩绾惧ジ鏌涚仦鐐殤閺佸牓鎮楃憴鍕缂侇喖绻樿棟閻庨潧鎽滃Λ顖炴煙椤栧棔绀佹禒顕€鎮楀▓鍨灈闁绘牜鍘ч悾鐑芥偂鎼存ɑ顫嶅┑鈽嗗灟鐠€锕傛倵瀹曞洨纾介柛灞剧懅閸斿秵銇勯妸銉︻棞闁伙絾绻堥獮鏍ㄦ媴濮濆本鎲伴梻浣虹帛濡啴藟閹捐姹查悗锝庡枟閻撶喐淇婇妶鍌氫壕闂佺粯顨呭Λ妤呭煝閹炬緞鏃堝川椤旇瀚奸梺鑽ゅТ濞茬娀鍩€椤掑啯鐝柣蹇婂亾闂傚倷绀侀幖顐﹀箠閹邦厽鍙忛柟缁㈠枟閸嬧晠鏌i妶搴$仜濞存粌缍婇弻鐔兼倻濡偐鐣洪梺鍝勬噺缁诲牆顫忓ú顏咁棃婵炴垶鑹鹃。鍝勨攽閳藉棗浜濋柣鐔叉櫊閵嗕礁鈻庨幒鏃傛澑闂佸搫鍟崐濠氭儊閸儲鈷戞慨鐟版搐閻忓弶绻涙担鍐插椤╃兘鏌ㄩ弴鐐测偓褰掓偂閺囥垺鐓忓┑鐐茬仢閸斻倝鏌涢埡瀣ɑ妞ゃ劊鍎甸幃娆撳级閹存繍娼氭俊銈囧Х閸嬬偤鏁冮姀銈冣偓浣糕枎閹炬潙娈愰梺鍐叉惈椤戝洭鐛姀銈嗏拻闁稿本鐟︾粊鐗堛亜椤愩埄妲搁柣锝呭槻铻i柤娴嬫櫇閻撳顪冮妶鍡橆梿闁跨喆鍎茬粋宥堛亹閹烘挾鍘甸梺缁樺灦钃遍悘蹇e幖闇夋繝濠傚暟缁夌儤鎱ㄦ繝鍛仩缂佽鲸甯掕灒闁惧繘鈧稒顢橀梻鍌欑劍鐎笛兠哄澶婄柧婵炴垶绮庢禍閬嶆⒒娴e憡鍟炴繛璇х畵瀹曞綊鏌嗗鍛幈闂佺鎻梽鍕偂濞嗘挻鐓犳繛鏉戭儐濞呭懎霉閻樺磭鐭婇柍瑙勫灴閸ㄩ箖鎮欓挊澶夊垝闂備浇顕栭崰妤呫€冮崨鏉戠叀濠㈣埖鍔曠粻鎶芥煙閹屽殶鐟滄澘娲ㄧ槐鎾诲磼濞嗘垼绐楅梺鍝ュУ閻楃娀銆侀弽顓炲窛闁圭⒈鍘介弲锝夋⒑缁嬭法绠抽柛妯犲懏顐介柣鎰節缁诲棙銇勯弽銊х煂閻㈩垱绋掔换娑㈠川椤撶喎鏋犲┑顔硷功缁垶骞忛崨瀛樺仭闂侇叏绠戝▓婵堢磽閸屾瑦绁版い鏇嗗洤纾归柛顭戝櫘閸ゆ洜绱撴担璐細缂佲檧鍋撻梻浣规偠閸庮垶宕濆鍛瀺闁搞儺鍓氶埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋呭畷宀€鈧娲忛崹浠嬪箖娴犲宸濆┑鐘插楠炴姊洪悷鏉挎倯闁伙綆浜畷瑙勭節濮橆剛鍘愰梺鍝勬储閸ㄦ椽鎮¢妷锔藉弿婵☆垰鐏濋悡鎰版煟閹捐泛鏋涢柣鎿冨亰瀹曞爼濡烽妷銉バ戠紓鍌欑椤戝牆鐣烽悽鍨潟闁圭儤姊荤壕鍏间繆椤栨繂浜归柣锝堟缁辨挻鎷呴搹鐟扮缂備浇顕ч悧鍡涙偩瀹勯偊娼ㄩ柍褜鍓氭穱濠傤潰瀹€濠冃ㄧ紓鍌欐祰妞村摜鎹㈤崼婵愭綎缂備焦蓱婵绱掑☉姗嗗剰婵炲牊鍔欏娲箹閻愭彃顬嗛梺鍛婎殔閸熷潡鎮鹃悜绛嬫晬闁绘劘灏欐鍥⒑閻熼偊鍤熷┑顕€娼ч埢鎾淬偅閸愨斁鎷虹紓鍌欑劍钃遍柍閿嬪浮閺屽秴鐣¢幍顔尖叺閻庢鍣崑濠傜暦閹烘鍊烽悗鐢登归獮鍫ユ⒒娴g懓鈻曢柡渚囧櫍瀹曟垿骞樼紒妯煎幐闂佸憡渚楅崰姘跺箠閸涱喕绻嗛柛娆忣槸婵洭鎽堕敐澶嬪仩婵炴垶甯掓晶鏌ユ煛閸屾浜鹃梻鍌氬€烽懗鍓佸垝椤栫偛绀夐柡鍥╁€i悢鍝ョ瘈闁搞儜鍐╁劒闂備胶绮弻銊╂儍濠靛缁╅柤鎭掑劘娴滄粓鏌¢崘銊﹀妞ゃ儱顦甸弻娑㈠棘鐠囨祴鍋撳┑瀣闁割偅娲橀崐鐑芥煟閹寸偍缂氶柛姗€浜跺娲传閸曨剙鍋嶉梺鍛婃煥閺堫剟寮查崼鏇ㄦ晬闁绘劕顕崢鍗炩攽閻愬弶顥滅紒缁樺笧缁粯绻濆顓犲幐闁诲繒鍋熼弲顐f櫏闁诲氦顫夊ú锕傚磻婵犲倻鏆﹂柣鏃傗拡閺佸棝鏌嶈閸撴瑩鍩㈠澶嬫櫜闁搞儮鏅濋敍婵囩箾鏉堝墽绋荤憸鏉垮暞缁傚秹鎮欓鍌滅槇闂侀潧楠忕徊鍓ф兜閻愵兙浜滈柟瀛樼箖瀹告繄绱掗鍓у笡闁靛牞缍佸畷姗€鍩¢崘銊ョ闂備浇顕х€涒晝绮欓幒鎴犲箵閻犳亽鍔庢稉宥嗘叏濡炶浜鹃梺鍝勮閸斿矂鍩ユ径濞㈢喐寰勯惂鍝ョɑ闁靛洤瀚版俊鎼佹晲閸涱厼袝闂備浇顕栭崰妤呮偡閳哄懌鈧線寮崼婵堫槹濡炪倖鎸荤换鍕矆閸曨垱鈷掗柛灞剧懄缁佺増銇勯弴鐔哄⒌鐎规洑鍗冲浠嬵敃閵堝浂妲稿┑鐘垫暩婵挳宕愭繝姘辈闁挎洖鍊归悡娆愩亜閺嶎偄浠滃ù婊呭娣囧﹪鎳犳0婵嗘闂佸疇顫夐崹鍧楀春閸曨垰绀冮柕濞у懌鍋″┑锛勫亼閸娿倝宕㈡ィ鍐ㄧ婵☆垯璀﹂崵鏇㈡偣閸ャ劎銈存俊鎻掔墦閺屾洝绠涢弴鐑嗘綌闂佸啿鎼幊蹇涙偂韫囨搩鐔嗛悹楦挎婢ф洟鏌涢弮鈧幐鎶藉蓟濞戙垹妫樻繛鍡欏亾妤旂紓鍌欐祰妞存悂骞愭繝姘闁告侗鍨抽惌娆撳箹鐎涙ɑ灏ù婊堢畺閺屾稑鈹戦崟顐㈠Б闂佹椿鍘介幐楣冨箟閹间焦鍋嬮柛顐g箘閻熴劑姊洪崫鍕靛剮缂佽埖宀稿濠氭偄閻撳海顦悷婊冪箳閺侇喖鈽夐姀锛勫幐闂佸憡渚楅崰妤呭磹閹扮増鐓涢悘鐐额嚙婵倿鏌熼鍝勨偓婵嗙暦閹烘垟妲堟慨妤€妫旂槐锟� ---闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛濠傛健閺屻劑寮崼鐔告闂佺ǹ顑嗛幐鍓у垝椤撶偐妲堟俊顖氭惈缁犺鈹戦悙鍙夆枙濞存粍绮撻幃鈥斥槈閵忥紕鍘卞┑鐐村灥瀹曨剟鐛Ο姹囦簻闁哄倹瀵чˉ銏℃叏婵犲懏顏犻柟鐟板婵℃悂濡烽敂鎯х稈闂傚倷鑳堕幊鎾诲吹閺嶎厼绠柨鐕傛嫹
开发学院WEB开发ASP.NET .net操纵xml文件类(c#) 阅读

.net操纵xml文件类(c#)

 2006-09-07 17:13:18 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋挎瀬闁瑰墽绮崑鎰版煙缂佹ê绗ч柍褜鍓﹂崣鍐潖閸濆嫅褔宕惰娴犲ジ姊虹拠鑼闁煎綊绠栭幃楣冩倻閽樺鎽曢梺闈涱檧婵″洭宕㈤悽鍛娾拺閻熸瑥瀚烽崯蹇涙煕閻樺磭澧甸柕鍡楀€圭缓浠嬪川婵犲嫬骞堥梺纭呭閹活亞妲愰弴鐔哄ⅰ闂傚倷绶氬ḿ褍煤閵堝洠鍋撳顐㈠祮闁绘侗鍣i獮鎺懳旈埀顒傜不閿濆棛绡€闂傚牊绋戦弳娆徝瑰⿰鍫㈢暫闁哄矉缍佹慨鈧柍鎯版硾濠€杈ㄧ珶閺囩喓绡€婵﹩鍘鹃崢鐢告⒑缂佹ê濮﹂柛鎾村哺閹ɑ娼忛妸銈囩畾闂佸湱绮敮鐐存櫠濞戞氨纾肩紓浣贯缚濞插鈧娲栧畷顒冪亙闂佸憡鍔曢崯鐘诲礈濠靛牊宕叉繛鎴炨缚閺嗗棗鈹戦悩杈厡闁轰焦鐗滅槐鎾存媴娴犲鎽甸梺鍦嚀濞层倝鎮鹃悜钘夌闁规惌鍘介崓鐢告⒑閻熸澘鎮侀柣鎺炵畵閹骞栨担鍏夋嫽婵炶揪绲块崕銈夊吹閳ь剟姊洪幖鐐测偓鏍偋閻樿崵宓侀煫鍥ㄧ⊕閺呮悂鏌ㄩ悤鍌涘濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻戦妵鍕箻閸楃偟浠肩紓浣哄閸ㄥ爼寮诲☉銏犵疀闂傚牊绋掗悘鍫ユ倵閻熺増鍟炵紒璇插暣婵$敻宕熼姘鳖啋闁诲酣娼ч幗婊堟偩婵傚憡鈷戠痪顓炴媼濞兼劖绻涢懠顒€鏋庢い顐㈢箳缁辨帒螣閼测晜鍤岄梻渚€鈧偛鑻晶顔肩暆閿濆牆鍔垫い锔界叀閹繝濡舵径瀣帾闂佸壊鍋呯换鍐磻椤忓懐绠剧€瑰壊鍠曠花濠氬箚閻斿吋鈷戦悗鍦У閵嗗啴鏌ら崘鑼煟鐎规洘绻堥弫鍐焵椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈橀柣鐔稿姍濮婃椽鎮℃惔鈩冩瘣闂佺粯鐗曢妶绋跨暦閻戞ḿ绡€闁搞儜鍐ㄧギ闂備線娼ф蹇曟閺囥垹鍌ㄦい蹇撶墛閳锋垿鏌熼懖鈺佷粶闁告梹顨婇弻锟犲川椤旈敮濮囩紓浣稿€圭敮鐔妓囩€靛摜纾奸弶鍫涘妼缁楁碍绻涢悡搴g闁糕斁鍓濋幏鍛存煥鐎e灚缍楅梻鍌氬€峰ù鍥ь浖閵娾晜鍊块柨鏇炲€哥粻鏌ユ煕閵夘喖澧柡瀣╃窔閺岀喖宕滆鐢盯鏌¢崨顔藉€愰柡灞诲姂閹倝宕掑☉姗嗕紦闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛銈呭閺屻倝宕妷锔芥瘎婵炲濮靛銊ф閹捐纾兼繛鍡樺笒閸橈紕绱撴笟鍥ф珮闁搞劌鐖兼俊鎾礃椤旂厧绐涢梺鍝勵槹閸ㄥ綊宕㈠ú顏呭€垫鐐茬仢閸旀碍銇勯敂璇茬仸鐎规洩绻濋獮搴ㄦ嚍閵壯冨妇闂傚⿴鍋勫ú锕€煤閺嶃劎澧¢梻鍌欐祰椤曆呪偓鍨浮瀹曟粓鎮㈡總澶嬬稁闂佹儳绻愬﹢杈╁閸忛棿绻嗘い鏍ㄧ閹牊銇勯銏㈢劯婵﹥妞藉畷鐑筋敇濞戞瑥鐝遍梻浣呵归鍛涘┑瀣畾闁逞屽墯閵囧嫯绠涢幘瀵搞偐濠碘槅鍨扮€氭澘顫忓ú顏勪紶闁告洦鍓氶幏鍗炩攽閻愭彃绾у畝锝呮健楠炴垿濮€閻橆偅鏂€婵犵數濮寸€氼噣寮堕幖浣光拺闁告繂瀚婵嗏攽椤旀儳鍘撮柟顔诲嵆婵$兘鍩¢崒妤佸濠电偠鎻徊浠嬪箹椤愩倖鏆滈悹杞拌閻斿棝鏌i悢宄扮盎闁衡偓閼姐倗纾奸柛灞炬皑瀛濆Δ妤婁簷閸楀啿鐣烽悡搴僵闁挎繂鎳嶆竟鏇㈡⒑閸濆嫬鏆欓柣妤€妫涚划鍫ュ礃閳瑰じ绨婚棅顐㈡搐濞寸兘藝閿曗偓闇夋繝濠傜墢閻f椽鏌$仦璇插闁宠鍨垮畷鍗炩槈閹典礁浜炬俊銈傚亾妞ゎ叀鍎婚¨渚€鏌涢悩宕囧⒌婵犫偓娓氣偓濮婅櫣绱掑Ο鏇熷灴閹兘濡疯閸嬫挸顫濋悡搴㈢亾缂備緡鍠氱划顖炲Χ閿濆绀冮柍鍝勫暙楠炲牊淇婇悙顏勨偓鏍礉閹达箑纾归柡鍥ュ灩閸戠娀骞栧ǎ顒€濡介柣鎾跺枛閻擃偊宕惰閸庡繘鏌涢弮鈧划鎾诲蓟閺囥垹鐐婄憸宥夘敂椤撶姭鍋撳▓鍨灍婵炲吋鐟ㄩ悘鎺楁⒑閸涘﹦绠撻悗姘煎墲椤ゅ倹绻濈喊澶岀?闁稿鍨垮畷鎰板箣閿曗偓閸ㄥ倹绻涘顔荤凹闁稿绻濋弻宥夊传閸曨剙娅g紓浣哄У閻楃娀寮诲澶婄厸濞达絽鎲″▓鏌ユ⒑缁嬫寧鎹i柛鐘崇墵瀵寮撮姀鐘靛€為悷婊冪Ф閼鸿鲸绻濆顓犲幍闂佸憡鍨崐鏍偓姘炬嫹
核心提示:一直想要写一个操作xml文件的类,今天在网上找了一下,找到一个已写的差不多的类,对其进行扩展与修改,最终成了以下代码,供新手参考参考.//在此类中用到了XML事件.此类中对于节点的查找必需用xpath表达式,如果你对xpath表达式不了解可以查看我收藏的另外一篇文章:+XML文件操作:[学习xpath]XPath最通俗

一直想要写一个操作xml文件的类,今天在网上找了一下,找到一个已写的差不多的类,对其进行扩展与修改,最终成了以下代码,供新手参考参考.
//
在此类中用到了XML事件.此类中对于节点的查找必需用xpath表达式,如果你对xpath表达式不了解可以查看我收藏的另外一篇文章:+XML文件操作:[学习xpath]XPath最通俗的教程+

  1using System;
  2using System.Xml;
  3using System.Web;
  4namespace solucky
  5{
  6   /**//// <summary>
  7   /// 必需用XPATH表达式来获取相应节点
  8   /// 关于xpath可以参见:
  9   /// </summary>
 10   public class MyXml
 11   {
 12     变量#region 变量
 13     /**//// <summary>
 14     /// xml文件所在路径类型
 15     /// </summary>
 16     /// <remarks>xml文件所在路径类型</remarks>
 17     public enum enumXmlPathType
 18     {  
 19       /**//// <summary>
 20       /// 绝对路径
 21       /// </summary>
 22       AbsolutePath,
 23       /**//// <summary>
 24       /// 虚拟路径
 25       /// </summary>
 26       VirtualPath
 27     }
 28
 29     PRivate string xmlFilePath ;
 30     private enumXmlPathType xmlFilePathType ;
 31     private XmlDocument xmlDoc = new XmlDocument() ;
 32     #endregion
 33
 34
 35     属性#region 属性
 36     /**//// <summary>
 37     /// 文件路径
 38     /// </summary>
 39     /// <remarks>文件路径</remarks>
 40     public string XmlFilePath
 41     {
 42       get
 43       {
 44         return this.xmlFilePath;
 45       }
 46       set
 47       {
 48         xmlFilePath = value ;
 49
 50       }
 51     }
 52
 53     /**//// <summary>
 54     /// 文件路径类型
 55     /// </summary>
 56     public enumXmlPathType XmlFilePathTyp
 57     {
 58       set
 59       {
 60         xmlFilePathType = value ;
 61       }
 62     }
 63     #endregion
 64
 65     构造函数#region 构造函数
 66     /**//// <summary>
 67     ///
 68     /// </summary>
 69     /// <param name="tempXmlFilePath"></param>
 70     public MyXml( string tempXmlFilePath )
 71     {
 72       //
 73       // TODO: 在此处添加构造函数逻辑
 74       //
 75
 76       this.xmlFilePathType = enumXmlPathType.VirtualPath ;
 77       this.xmlFilePath = tempXmlFilePath ;
 78       GetXmlDocument() ;
 79       //xmlDoc.Load( xmlFilePath ) ;
 80     }
 81  
 82     /**//// <summary>
 83     /// 构造函数
 84     /// </summary>
 85     /// <param name="tempXmlFilePath">文件路径</param>
 86     /// <param name="tempXmlFilePathType">类型</param>
 87     public MyXml( string tempXmlFilePath , enumXmlPathType tempXmlFilePathType )
 88     {
 89       //
 90       // TODO: 在此处添加构造函数逻辑
 91       //
 92       this.xmlFilePathType = tempXmlFilePathType ;
 93       this.xmlFilePath = tempXmlFilePath ;
 94       GetXmlDocument() ;
 95     }
 96     #endregion
 97
 98
 99     /**////<summary>
100     ///获取XmlDocument实体类
101     ///</summary>  
102     /// <returns>指定的XML描述文件的一个xmldocument实例</returns>
103     private XmlDocument GetXmlDocument()
104     {
105       XmlDocument doc=null;
106
107       if( this.xmlFilePathType == enumXmlPathType.AbsolutePath )
108       {
109         doc = GetXmlDocumentFromFile( xmlFilePath ) ;
110       }
111       else if( this.xmlFilePathType == enumXmlPathType.VirtualPath )
112       {
113         doc = GetXmlDocumentFromFile(HttpContext.Current.Server.MapPath(xmlFilePath)) ;
114       }
115       return doc;
116     }
117
118     private XmlDocument GetXmlDocumentFromFile(string tempXmlFilePath)
119     {
120       string xmlFileFullPath = tempXmlFilePath ;
121       xmlDoc.Load(xmlFileFullPath) ;
122       //定义事件处理
123       xmlDoc.NodeChanged += new XmlNodeChangedEventHandler(this.nodeUpdateEvent);
124       xmlDoc.NodeInserted += new XmlNodeChangedEventHandler(this.nodeInsertEvent);
125       xmlDoc.NodeRemoved += new XmlNodeChangedEventHandler(this.nodeDeleteEvent);
126       return xmlDoc ;
127     }
128
129     读取指定节点的指定属性值#region 读取指定节点的指定属性值
130     /**//// <summary>
131     /// 功能:
132     /// 读取指定节点的指定属性值  
133     /// </summary>
134     /// <param name="strNode">节点名称</param>
135     /// <param name="strAttribute">此节点的属性</param>
136     /// <returns></returns>
137     public string GetXmlNodeAttributeValue(string strNode,string strAttribute)
138     {
139       string strReturn = "";
140       try
141       {
142         //根据指定路径获取节点
143         XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode) ;
144         if (!(xmlNode==null))
145         {//获取节点的属性,并循环取出需要的属性值
146           XmlAttributeCollection xmlAttr = xmlNode.Attributes ;
147
148           for(int i=0 ;i<xmlAttr.Count; i++)
149           {
150             if (xmlAttr.Item(i).Name == strAttribute)
151             {
152               strReturn = xmlAttr.Item(i).Value ;
153               break;
154             }
155           }
156         }
157       }
158       catch(XmlException xmle)
159       {
160         throw xmle ;
161       }
162       return strReturn ;
163     }
164     #endregion
165
166
167     读取指定节点的值#region 读取指定节点的值
168     /**//// <summary>
169     /// 功能:
170     /// 读取指定节点的值  
171     /// </summary>
172     /// <param name="strNode">节点名称</param>
173     /// <returns></returns>
174     public string GetXmlNodeValue(string strNode)
175     {
176       string strReturn = String.Empty ;
177
178       try
179       {
180         //根据路径获取节点
181         XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode) ;
182         if (!(xmlNode==null))
183           strReturn = xmlNode.InnerText ;
184       }
185       catch(XmlException xmle)
186       {
187         throw xmle ;
188       }
189       return strReturn ;
190     }
191     #endregion
192
193     设置节点值#region 设置节点值
194     /**//// <summary>
195     /// 功能:
196     /// 设置节点值    
197     /// </summary>
198     /// <param name="strNode">节点的名称</param>
199     /// <param name="newValue">节点值</param>
200     public void SetXmlNodeValue(string xmlNodePath,string xmlNodeValue)
201     {
202       try
203       {
204         //可以批量为符合条件的节点进行付值
205         XmlNodeList xmlNode=this.xmlDoc.SelectNodes(xmlNodePath);
206         if (!(xmlNode==null))
207         {
208           foreach(XmlNode xn in xmlNode)
209           {
210             xn.InnerText = xmlNodeValue ;  
211           }
212         }
213         /**//*
214         * 根据指定路径获取节点
215         XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath) ;      
216         //设置节点值
217         if (!(xmlNode==null))
218           xmlNode.InnerText = xmlNodeValue ;*/        
219       }
220       catch(XmlException xmle)
221       {
222         throw xmle ;
223       }
224     }
225     #endregion
226
227     设置节点的属性值#region 设置节点的属性值
228     /**//// <summary>
229     /// 功能:
230     /// 设置节点的属性值  
231     /// </summary>
232     /// <param name="xmlNodePath">节点名称</param>
233     /// <param name="xmlNodeAttribute">属性名称</param>
234     /// <param name="xmlNodeAttributeValue">属性值</param>
235     public void SetXmlNodeAttributeValue(string xmlNodePath,string xmlNodeAttribute,string xmlNodeAttributeValue)
236     {
237       try
238       {
239         //可以批量为符合条件的节点的属性付值
240         XmlNodeList xmlNode=this.xmlDoc.SelectNodes(xmlNodePath);
241         if (!(xmlNode==null))
242         {
243           foreach(XmlNode xn in xmlNode)
244           {
245             XmlAttributeCollection xmlAttr = xn.Attributes ;
246             for(int i=0 ; i<xmlAttr.Count ; i++)
247             {
248               if ( xmlAttr.Item(i).Name == xmlNodeAttribute )
249               {
250                 xmlAttr.Item(i).Value = xmlNodeAttributeValue;
251                 break ;
252               }
253             }  
254           }
255         }
256         /**//*单个节点
257         //根据指定路径获取节点
258         XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath) ;
259         if (!(xmlNode==null))
260         {//获取节点的属性,并循环取出需要的属性值
261           XmlAttributeCollection xmlAttr = xmlNode.Attributes ;
262           for(int i=0 ; i<xmlAttr.Count ; i++)
263           {
264             if ( xmlAttr.Item(i).Name == xmlNodeAttribute )
265             {
266               xmlAttr.Item(i).Value = xmlNodeAttributeValue;
267               break ;
268             }
269           }  
270         }
271         */
272       }
273       catch(XmlException xmle)
274       {
275         throw xmle ;
276       }
277     }
278     #endregion
279
280     添加#region 添加
281     /**//// <summary>
282     /// 获取XML文件的根元素
283     /// </summary>
284     public XmlNode GetXmlRoot()
285     {
286       return xmlDoc.DocumentElement ;
287     }
288
289     /**//// <summary>
290     /// 在根节点下添加父节点
291     /// </summary>
292     public void AddParentNode(string parentNode)
293     {
294       try
295       {
296         XmlNode root = GetXmlRoot() ;
297         XmlNode parentXmlNode = xmlDoc.CreateElement(parentNode) ;
298         root.AppendChild(parentXmlNode) ;        
299       }
300       catch(XmlException xmle)
301       {
302         throw xmle ;
303       }
304     }
305    
306     /**//// <summary>
307     /// 向一个已经存在的父节点中插入一个子节点
308     /// </summary>
309     /// <param name="parentNodePath">父节点</param>
310     /// <param name="childNodePath">字节点名称</param>
311     public void AddChildNode( string parentNodePath,string childnodename )
312     {
313       try
314       {
315         XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath) ;        
316         if(!((parentXmlNode)==null))//如果此节点存在
317         {  
318           XmlNode childXmlNode =  xmlDoc.CreateElement(childnodename) ;        
319           parentXmlNode.AppendChild( childXmlNode ) ;  
320         }
321         else{//如果不存在就放父节点添加
322           //this.GetXmlRoot().AppendChild(childXmlNode);
323         }
324              
325       }
326       catch(XmlException xmle)
327       {
328         throw xmle;
329       }
330     }
331    
332     /**//// <summary>
333     /// 向一个节点添加属性
334     /// </summary>
335     /// <param name="NodePath">节点路径</param>
336     /// <param name="NodeAttribute">属性名</param>
337     public void AddAttribute( string NodePath , string NodeAttribute)
338     {
339       privateAddAttribute(NodePath,NodeAttribute,"");
340     }
341     /**//// <summary>
342     ///
343     /// </summary>
344     /// <param name="NodePath"></param>
345     /// <param name="NodeAttribute"></param>
346     /// <param name="NodeAttributeValue"></param>
347     private void privateAddAttribute( string NodePath , string NodeAttribute,string NodeAttributeValue)
348     {
349       try
350       {
351         XmlNode nodePath = xmlDoc.SelectSingleNode( NodePath ) ;
352         if (!(nodePath==null))
353         {  
354           XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
355           nodeAttribute.Value=NodeAttributeValue;
356           nodePath.Attributes.Append(nodeAttribute) ;            
357         }
358       }
359       catch(XmlException xmle)
360       {
361         throw xmle;
362       }
363     }
364     /**//// <summary>
365     ///  向一个节点添加属性,并付值
366     /// </summary>
367     /// <param name="NodePath">节点</param>
368     /// <param name="NodeAttribute">属性名</param>
369     /// <param name="NodeAttributeValue">属性值</param>
370     public void AddAttribute( string NodePath , string NodeAttribute,string NodeAttributeValue)
371     {
372       privateAddAttribute(NodePath,NodeAttribute,NodeAttributeValue);
373     }
374     #endregion
375
376     删除#region 删除
377     /**//// <summary>
378     /// 删除节点的一个属性
379     /// </summary>
380     /// <param name="NodePath">节点所在的xpath表达式</param>
381     /// <param name="NodeAttribute">属性名</param>
382     public void DeleteAttribute( string NodePath , string NodeAttribute)
383     {      
384       XmlNodeList nodePath =this.xmlDoc.SelectNodes(NodePath);      
385       if (!(nodePath==null))
386       {
387         foreach (XmlNode tempxn in nodePath)
388         {
389           XmlAttributeCollection xmlAttr = tempxn.Attributes ;
390           for(int i=0 ; i<xmlAttr.Count ; i++)
391           {
392             if ( xmlAttr.Item(i).Name == NodeAttribute)
393             {
394               tempxn.Attributes.RemoveAt(i);
395               break ;
396             }
397           }
398         }
399       }
400     }
401    
402     /**//// <summary>
403     /// 删除节点,当其属性值等于给定的值时
404     /// </summary>
405     /// <param name="NodePath">节点所在的xpath表达式</param>
406     /// <param name="NodeAttribute">属性</param>
407     /// <param name="NodeAttributeValue">值</param>
408     public void DeleteAttribute( string NodePath , string NodeAttribute , string NodeAttributeValue)
409     {
410       XmlNodeList nodePath =this.xmlDoc.SelectNodes(NodePath);      
411       if (!(nodePath==null))
412       {
413         foreach (XmlNode tempxn in nodePath)
414         {
415           XmlAttributeCollection xmlAttr = tempxn.Attributes ;
416           for(int i=0 ; i<xmlAttr.Count ; i++)
417           {
418             if ( xmlAttr.Item(i).Name == NodeAttribute && xmlAttr.Item(i).Value==NodeAttributeValue)
419             {
420               tempxn.Attributes.RemoveAt(i);
421               break ;
422             }
423           }
424         }
425       }
426     }
427     /**//// <summary>
428     /// 删除节点
429     /// </summary>
430     /// <param name="tempXmlNode"></param>
431     /// <remarks></remarks>
432     public void DeleteXmlNode(string tempXmlNode){  
433       XmlNodeList nodePath =this.xmlDoc.SelectNodes(tempXmlNode);
434       if (!(nodePath==null))
435       {
436         foreach(XmlNode xn in nodePath)
437         {
438           xn.ParentNode.RemoveChild(xn);    
439         }
440       }
441     }
442
443     #endregion
444
445     XML文档事件#region XML文档事件
446     /**//// <summary>
447     ///
448     /// </summary>
449     /// <param name="src"></param>
450     /// <param name="args"></param>
451     private  void nodeInsertEvent(Object src, XmlNodeChangedEventArgs args)
452     {
453       //保存设置
454       SaveXmlDocument();
455     }
456     /**//// <summary>
457     ///
458     /// </summary>
459     /// <param name="src"></param>
460     /// <param name="args"></param>
461     private  void nodeDeleteEvent(Object src, XmlNodeChangedEventArgs args)
462     {
463       //保存设置
464       SaveXmlDocument();
465     }
466     /**//// <summary>
467     ///
468     /// </summary>
469     /// <param name="src"></param>
470     /// <param name="args"></param>
471     private  void nodeUpdateEvent(Object src, XmlNodeChangedEventArgs args)
472     {
473       //保存设置
474       SaveXmlDocument();
475     }
476     #endregion
477
478     保存XML文件#region 保存XML文件
479     /**//// <summary>
480     /// 功能:
481     /// 保存XML文件
482     ///
483     /// </summary>
484     public void SaveXmlDocument()
485     {
486       try
487       {
488         //保存设置的结果
489         if( this.xmlFilePathType == enumXmlPathType.AbsolutePath )
490         {
491           Savexml( xmlFilePath ) ;
492         }
493         else if( this.xmlFilePathType == enumXmlPathType.VirtualPath )
494         {
495           Savexml(HttpContext.Current.Server.MapPath(xmlFilePath)) ;
496         }
497       }
498       catch(XmlException xmle)
499       {
500         throw xmle;
501       }
502     }
503  
504     /**//// <summary>
505     /// 功能:
506     /// 保存XML文件  
507     /// </summary>
508     public void SaveXmlDocument(string tempXMLFilePath)
509     {
510       try
511       {
512         //保存设置的结果
513         Savexml(tempXMLFilePath);
514       }
515       catch(XmlException xmle)
516       {
517         throw xmle;
518       }
519     }
520     /**//// <summary>
521     ///
522     /// </summary>
523     /// <param name="filepath"></param>
524     private void Savexml(string filepath)
525     {
526       xmlDoc.Save(filepath);
527     }
528
529     #endregion
530
531   }
532
533}
534
535

Tags:net 操纵 xml

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接