位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 修改節(jié)點的值

提問人:劉團圓發(fā)布時間:2020-12-10

    在了解如何改變節(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


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部