C# InnerText、InnerXml、FirstChild.Value 的区别

作者:vkvi 来源:ITPOW(原创) 日期:2010-6-24

XmlDocument 节点其中有三个属性,C# InnerText、InnerXml、FirstChild.Value。

XmlDocument doc = new XmlDocument();
doc.LoadXml("<n1><n1.1>content1</n1.1><n1.2>content2</n1.2></n1>");
string str = "InnerText:" + doc.ChildNodes[0].InnerText + "\r\n" +
             "InnerXml:" + doc.ChildNodes[0].InnerXml + "\r\n" +
             "Value:" + doc.ChildNodes[0].FirstChild.Value;
  • InnerText 的值为 content1content2。
  • InnerXml 的值为 <n1.1>content1</n1.1><n1.2>content2</n1.2>。
  • FirstChild.Value 的值为零长度字符串。

区别

  • InnerText 只是取 #Text 节点内容,而 InnerXml 则具有子节点名称、<![CDATA[]]> 等。
  • InnerText 和 InnerXml 的共同点是都具有“穿透性”,而 FirstChild.Value 则不具有穿透性,所以这里取不到值。也正因为 InnerText 和 InnerXml 具有“穿透性”,所以我们可以不必像 Value 一样多一层 FirstChild(或 ChileNodes[0])用来表示文本节点,当然多一层也是正确的。
  • 因为 InnerText 与 InnerXml 具有“穿透性”,实际应用中,我们可以省略文本节点这一层,这样节点内容为空(<![CDATA[]]> 不算为空)的时候,不会报错。而 FirstChild.Value 则做不到。
相关文章