博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XmlNode中Value和InnerText的区别
阅读量:5319 次
发布时间:2019-06-14

本文共 2244 字,大约阅读时间需要 7 分钟。

这个问题我想很多人在使用.NET 操作 Xml 文档时都遇到过,先看一下MSDN里对这两个属性的解释:

XmlNode.Value:获取或设置节点的值。

XmlNode.InnerText:获取或设置节点及其所有子节点的串联值。

只看这两个定义是不是还是有点迷糊,下面我们用实例来作说明:

1.当操作节点是叶子节点时:
XmlDocument xDoc=new XmlDocument();
xDoc.LoadXml(@"
Tiramisu
25
 
");
XmlNode root=xDoc.DocumentElement;
XmlNode nameNode=root.SelectSingleNode("Coder/Name");  // 获取Name节点
Console.WriteLine(nameNode.Value);
Console.WriteLine(nameNode.InnerText);

输出结果如下:

null

Tiramisu

2.当操作节点是父结点时:
XmlDocument xDoc=new XmlDocument();
xDoc.LoadXml(@"
Tiramisu
25
 
");
XmlNode root=xDoc.DocumentElement;
XmlNode coderNode=root.SelectSingleNode("Coder");  // 获取Name节点
Console.WriteLine(coderNode.Value);
Console.WriteLine(coderNode.InnerText);

输出结果如下:

null

Tiramisu25

3.当操作节点是属性时:
XmlDocument xDoc=new XmlDocument();
xDoc.LoadXml(@"
Tiramisu
25
 
");
XmlNode root=xDoc.DocumentElement;
XmlNode coderNode=root.SelectSingleNode("Coder");  // 获取Name节点
Console.WriteLine(coderNode.Attributes["EnglishName"].Value);
Console.WriteLine(coderNode.Attributes["EnglishName"].InnerText);

XmlDocument xDoc=new XmlDocument();
xDoc.LoadXml(@"
Tiramisu
25
 
");
XmlNode root=xDoc.DocumentElement;
XmlNode engNameAttr=root.SelectSingleNode("Coder/@EnglishName");  // 获取Name节点
Console.WriteLine(engNameAttr.Value);
Console.WriteLine(engNameAttr.InnerText);

输出结果:

Benjamin

Benjamin

上文的示例代码中,我们使用了语法来查找DOM元素,更多的信息,大家请自行查阅。

从示例中我们可以看出,InnerText会把节点及其子元素的文本内容(尖括号所包含的内容)拼接起来作为返回值;而Value则不然,无论是父节点还是子节点,返回值都为 null ,而当操作的节点类型为属性时,Value的返回值与InnerText相同。其实,Value的返回值,与节点类型(NodeType)相关,下面是中列出的节点类型及 XmlNode.Value 的返回值:

类型
Attribute 属性的值
CDATASection CDATA 节的内容。
Comment 注释的内容
Document null
DocumentFragment null
DocumentType null
Element null . 您可以使用 或 属性访问元素节点的值。
Entity null
EntityReference null
Notation null
ProcessingInstruction 全部内容(不包括指令目标)。
Text 文本节点的内容
SignificantWhitespace 空白字符。 空白可由一个或多个空格字符、回车符、换行符或制表符组成。
Whitespace 空白字符。 空白可由一个或多个空格字符、回车符、换行符或制表符组成。
XmlDeclaration 声明的内容(即在 <?xml 和 ?> 之间的所有内容)。
示例1、2中我们获取的节点类型都是 Element ,所以
XmlNode.Value 的返回值是
null

转载于:https://www.cnblogs.com/gb2013/archive/2012/09/03/2669437.html

你可能感兴趣的文章
java中遍历属性字段及值(常见方法)
查看>>
在AD的环境下,更改计算机名导致TFS,无法连接解决办法
查看>>
Jenkins执行批处理文件失败
查看>>
JAVA 基础坑
查看>>
深入理解jQuery框架-框架结构
查看>>
[7.14NOIP模拟4]通讯 题解 (Tarjan缩点+贪心)
查看>>
刷水记录
查看>>
疫情控制
查看>>
YUI3自动加载树实现
查看>>
String类中的toUpperCase()和toLowerCase()方法
查看>>
python知识思维导图
查看>>
IIS建网站以及建FTP
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
@修饰符--python中的装饰器
查看>>
新工具
查看>>
如何学习-维果茨基
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
学习AS3菜鸟起飞吧之—函数(二):函数之返回语句
查看>>
sap basis 常用事务码 --转
查看>>