明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

在.NET Framework中簡單處理XML數(shù)據(jù)(1-3)

[摘要]每個節(jié)點的類型是XmlNodeType枚舉中的一種,在如圖三所示的代碼中,我們只用了其中的兩種類型:Element 和 EndElement。輸出源碼重新定制了原始的文檔結(jié)構(gòu),它丟棄或者說是忽略了XML元素的屬性和節(jié)點內(nèi)容,只輸出了元素節(jié)點名。假設(shè)我們運用了下面的XML片斷: <mags>...
每個節(jié)點的類型是XmlNodeType枚舉中的一種,在如圖三所示的代碼中,我們只用了其中的兩種類型:Element 和 EndElement。輸出源碼重新定制了原始的文檔結(jié)構(gòu),它丟棄或者說是忽略了XML元素的屬性和節(jié)點內(nèi)容,只輸出了元素節(jié)點名。假設(shè)我們運用了下面的XML片斷:

<mags>
<mag name="MSDN Magazine">
MSDN Magazine
</mag>
<mag name="MSDN Voices">
MSDN Voices
</mag>
</mags>
用上面的程序輸出的結(jié)果如下:

<mags>
<mag>
</mag>
<mag>
</mag>
</mags>

子節(jié)點的縮進量是根據(jù)閱讀器的深度屬性(Depth屬性)設(shè)置的,Depth屬性返回一個整形的數(shù)據(jù),它表示當(dāng)前節(jié)點的嵌套層次。所有文本都放在StringWriter對象中(一個非常方便的基于流的封裝了StrigBuilder類的類)。

如前所述,閱讀器不會自動通過Read方法訪問屬性節(jié)點。要訪問當(dāng)前元素的屬性節(jié)點集合,必須用一個簡單的用MoveToNextAttribute方法的返回值控制的循環(huán)去遍歷該集合。下面的代碼用于訪問當(dāng)前節(jié)點的所有屬性,并把屬性的名稱和它的值用逗號分開組合成一個字符串:
if (reader.HasAttributes)
while(reader.MoveToNextAttribute())
buf += reader.Name + "=\"" + reader.Value + "\",";
reader.MoveToElement();

當(dāng)你完成對屬性集的處理時,調(diào)用MoveToElement方法使指針返回到屬性所屬的元素節(jié)點。準(zhǔn)確的說,MoveToElement方法并不是真正的移動指針,因為在處理屬性集時指針從來就沒有從元素節(jié)點中移開。MoveToElement方法只不過指向某個內(nèi)部成員,并依次取得成員的值。例如,用Name屬性獲得某個屬性的屬性名,然后調(diào)用MoveToElement方法把指針移到其所屬的元素節(jié)點處。但是當(dāng)你不需要繼續(xù)處理別的節(jié)點時,就不必再調(diào)用MoveToElement方法了。