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