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

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

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-10

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


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

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