C# 修改節(jié)點(diǎn)的值
在了解如何改變節(jié)點(diǎn)值之前,先要明白,節(jié)點(diǎn)值一般比較復(fù)雜。實(shí)際上,即使派生于XmlNode的所有類都包含Value屬性,它也很少返回有用的信息。初看起來(lái)它可能令人失望,但實(shí)際上是十分合理的。分析一下前面的books示例:
<books>
<book>
<title>Beginning Visual C# 2017</title>
<author>Benjamin Perkins et al</author>
<code>458685</code>
</book>
<book>
</books>
文檔中的每對(duì)標(biāo)記都解析為DOM中的一個(gè)節(jié)點(diǎn)。在迭代文檔中的所有節(jié)點(diǎn)時(shí),會(huì)遇到許多XmlElement節(jié)點(diǎn)和三個(gè) XmlText 節(jié)點(diǎn)。上述 XML 中的 XmlElement 節(jié)點(diǎn)是<books>、<book>、<titl>、<author>和<code>。 XmlText節(jié)點(diǎn)是title、author和code開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間的文本。也可以說(shuō)title、author和code的值是標(biāo)記之間的文本,但文本本身就是一個(gè)節(jié)點(diǎn),是這個(gè)節(jié)點(diǎn)實(shí)際包含了值。其他標(biāo)記都沒(méi)有相關(guān)的值。
在上述FormatText方法的代碼靠近頂部的位置,if塊中的下述代碼在當(dāng)前節(jié)點(diǎn)是XmlText時(shí)執(zhí)行:
text += node.Value;
XmlText節(jié)點(diǎn)實(shí)例的Value屬性用于獲取節(jié)點(diǎn)的值。
如果使用XmlElement類型的節(jié)點(diǎn)的Value屬性,就返回null,但如果使用另兩個(gè)方法InnerText和InnerXml中的一個(gè),就可以獲取XmlElement開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間的信息。也就是說(shuō),可以使用兩個(gè)方法和一個(gè)屬性來(lái)操作節(jié)點(diǎn)的值,如表所示。
屬 性 | 說(shuō)明 |
InnerText | 這個(gè)屬性獲取當(dāng)前節(jié)點(diǎn)中所有子節(jié)點(diǎn)的文本,把它作為一個(gè)串聯(lián)字符串返回。也就是說(shuō),在上面的XML 中,如果獲取 book 節(jié)點(diǎn)的 InnerText 值,就返回字符串 Beginning Visual C# 2017#Benjamin Perkins eta 丨458685? 如果獲取title節(jié)點(diǎn)的InnerText,就只返回"Beginning Visual C# 2017"??梢允褂眠@個(gè)方法設(shè)盟文本,但要小 心,因?yàn)槿绻O(shè)M了錯(cuò)誤節(jié)點(diǎn)的文本,就很可能會(huì)改寫不想改變的信息 |
InnerXml屬性返回類似于InnerText的文本,但它也返回所有標(biāo)記。因此,如果獲取book節(jié)點(diǎn)上的InnerXml 值,結(jié)果是如下字符串: | |
InnerXml | <title>Beginning Visual C# 2017</title><author>Benjamin Perkins et al </authorxcode>458685</code> |
可以看出,如果字符串包含要直接插入XML文檔的內(nèi)容,這是很有用的。但是要對(duì)該字符串負(fù)全貴,如果 插入格式錯(cuò)誤的XML,應(yīng)用程序就會(huì)產(chǎn)生異常 | |
Value | Value厲性是操作文檔中信息的最精練方式,但如前所述,在獲取值時(shí),只有幾個(gè)類會(huì)返回有用的信息。返 回所需文本的類如下所示: XmlText XmlComment XmlAttribute |
點(diǎn)擊加載更多評(píng)論>>