携程网网站规划建设特点,茂名网站优化,怎么建立一个网址,著名的网站建设公司Xml读写操作#xff08;XmlTextReader 类#xff09;1.XML简介1#xff09;XML 和 HTML 的设计初衷XML 被设计用来传输和存储数据HTML 被设计用来显示数据2#xff09;什么是 XML?XML 指可扩展标记语言#xff08;EXtensible Markup Language#xff09;XML 是一种标记语…Xml读写操作XmlTextReader 类1.XML简介1XML 和 HTML 的设计初衷XML 被设计用来传输和存储数据HTML 被设计用来显示数据2什么是 XML?XML 指可扩展标记语言EXtensible Markup LanguageXML 是一种标记语言很类似 HTMLXML 的设计宗旨是传输数据而非显示数据XML 标签没有被预定义。您需要自行定义标签XML 被设计为具有自我描述性XML 是 W3C 的推荐标准3XML 与 HTML 的主要差异XML 不是 HTML 的替代XML 和 HTML 为不同的目的而设计XML 被设计为传输和存储数据其焦点是数据的内容HTML 被设计用来显示数据其焦点是数据的外观HTML 旨在显示信息而 XML 旨在传输信息4)关于节点 (非常重要)根据 DOMXML 文档中的每个成分都是一个节点。整个文档是一个文档节点每个 XML 标签是一个元素节点包含在 XML 元素中的文本是文本节点每一个 XML 属性是一个属性节点注释属于注释节点2.访问XML文件的两个基本模型1DOM模型使用DOM的好处在于它允许编辑和更新XML文档可以随机访问文档中的数据可以使用XPath查询但是DOM的缺点在于它需要一次性加载整个文档到内存中对于大型的文档这会造成资源问题。2流模型流模型很好的解决了这个问题因为它对XML文件的访问采用的是流的概念也就是说任何时候在内存中只有当前节点但它也有它的不足它是只读的仅向前的不能在文档中执行向后导航操作。虽然是各有千秋但我们也可以在程序中两者并用实现优劣互补。3.C#在System.XML 名称空间中包含以下几个用于XML的类XMLTextReader------提供以快速、单向、无缓冲的方式存取XML数据。单向意味着你只能从前往后读取XML文件而不能逆向读取XMLValidatingReader------与XMLTextReader类一起使用提供验证DTD、XDR和XSD架构的能力。XMLDocument------遵循W3C文档对象模型规范的一级和二级标准实现XML数据随机的、有缓存的存取。一级水平包含了DOM的最基本的部分而二级水平增加多种改进包括增加了对名称空间和级连状图表(CSS)的支持。XMLTextWriter------生成遵循 W3C XML 1.0 规范的XML文件。4. XMLTextReader 类简介C# XMLTextReader 这个类设计的目的就是从XML文件中快速的读取数据而对系统资源主要包括内存和处理器时间不做很高的要求。如果是需要对 XML 进行多样性的随机访问编辑操作则使用 XMLDocument该类具有极强的灵活性。5.特性1单向只读无缓冲且不可逆。2读取完毕需要手动关闭流释放资源。XMLTextReader 类的方法和属性1.XMLTextReader 类的一些常用的属性属性描述WhitespaceHandling WhitespaceHandling { get; set; }获取或设置一个值该值指定如何处理空白区域string? BaseURI { get; }获取当前节点的地址string NamespaceURI { get; }获取读取器定位在的节点的命名空间 URIEncoding? Encoding { get; }获取文档的编码int Depth { get; }获取XML文档中当前节点的深度int LineNumber { get; }获取当前行号int LinePosition { get; }获取当前行位置bool EOF { get; }判断读取器是否定位在流结尾XmlNodeType NodeType { get; }获取当前节点的类型string Value { get; }获取当前节点的文本值bool IsEmptyElement { get; }判断当前节点是否为空元素bool Normalization { get; set; }判断是否规范化空白区域和属性值string LocalName { get; }获取当前节点的本地名称string Name { get; }获取当前节点的限定名称string item[int]{ get; }获取指定索引处属性的值string item[string, string]{ get; }获取具有指定LocalName和NamespaceURI的属性的值string item[string]{ get; }获取具有指定Name的属性的值bool HasAttributes { get; }判断当前节点是否有任何属性int AttributeCount { get; }获取当前节点上的属性数目string Prefix { get; }获取与当前节点关联的命名空间前缀char QuoteChar { get; }获取用于括起属性节点的值的引号字符ReadState ReadState { get; }获取读取器的状态XmlReaderSettings? Settings { get; }获取用于创建此XmlReader实例的XmlReaderSettings对象Type ValueType { get; }获取当前节点的公共语言运行时类型string XmlLang { get; }获取当前 xml:lang 范围XmlSpace XmlSpace { get; }获取当前 xml:space 范围bool HasValue { get; }判断当前节点是否可以具有 String.Empty 以外的 Valuebool Namespaces { get; set; }获取或设置是否进行命名空间支持bool CanReadBinaryContent { get; }判断节点是否实现二进制内容读取方法bool CanReadValueChunk { get; }判断节点是否实现 ReadValueChunk(Char[], Int32, Int32) 方法bool CanResolveEntity { get; }判断读取器是否可以分析和解析实体EntityHandling EntityHandling { get; set; }获取或设置一个值该值指定读取器处理实体的方式XmlNameTable NameTable { get; }获取与此实现关联的 XmlNameTable2.XMLTextReader 类的一些常用的方法方法属性void Close();关闭流并释放资源void Dispose();释放当前使用的所有资源TextReader GetRemainder();获取当前节点外XML的剩余部分返回TextReaderbool Read();从流中读取下一个节点调用一次就只会读取一次XmlNodeType MoveToContent();跳过 非内容节点 至下一个 内容节点bool IsStartElement(string name);跳过非内容节点判断当前节点是否为指定元素的开始节点void ReadStartElement();跳过Element节点至下一个节点void ReadStartElement(string name);跳过 指定元素开始节点 至下一个节点void ReadEndElement();跳过EndElement节点至下一个节点bool ReadToDescendant(string name);跳到第一个具有指定限定名的子代元素bool ReadToFollowing(string name);一直读取直到找到所有具有指定限定名的元素bool ReadToNextSibling(string name);一直读取前进到下一个具有指定限定名的同级元素void ResetState();将读取器的状态重置为 ReadState.Initialstring GetAttribute(int i);获取具有指定索引的属性的值string GetAttribute(string name);获取具有指定属性名称的属性值IDictionary GetNamespacesInScope(XmlNamespaceScope scope);获取一个集合该集合包含当前在范围内的所有命名空间void MoveToAttribute(int i);移动到具有指定索引的属性bool MoveToAttribute(string name);移动到具有指定名称的属性bool MoveToElement();判断指针是否移动到属性节点bool MoveToFirstAttribute();移动到第一个属性bool MoveToNextAttribute();移动到下一个属性bool ReadAttributeValue();将属性值分析为一个或多个 Text、EntityReference 或 EndEntity 节点string ReadElementString();读取纯文本元素string ReadInnerXml();读取当前节点以下的所有内容包括标记和子级string ReadOuterXml();读取当前节点和所有它的子级的内容包括标记string ReadString();读取文本节点的内容XmlReader ReadSubtree();返回新的 XmlReader 实例此实例可用于读取当前节点及其所有子节点void Skip();跳过当前节点的子级3.XMLTextReader 类的一些不常用的方法方法描述int ReadChars(char[] buffer, int index, int count);将元素的文本内容读入字符缓冲区 通过连续调用此方法可以读取大的嵌入文本的流int ReadValueChunk(char[] buffer, int index, int count);读取嵌入在 XML 文档中的大量文本流string ReadContentAsString();将当前文本内容转为 String 对象读取仅支持文本节点object ReadContentAsObject();将当前文本内容转为 Object 对象读取仅支持文本节点bool ReadContentAsBoolean();当前文本内容转为 Boolean 对象读取,仅支持文本节点DateTime ReadContentAsDateTime();将当前文本内容转为 DateTime 对象读取仅支持文本节点DateTimeOffset ReadContentAsDateTimeOffset();将当前文本内容转为 DateTimeOffset 对象读取,仅支持文本节点decimal ReadContentAsDecimal();将当前文本内容转为 Decimal 对象读取,仅支持文本节点double ReadContentAsDouble();将当前文本内容转为 双精度浮点数 对象读取仅支持文本节点float ReadContentAsFloat();将当前文本内容转为 单精度浮点数 对象读取,仅支持文本节点int ReadContentAsInt();将当前文本内容转为 32 位有符号整数读取,仅支持文本节点long ReadContentAsLong();将当前文本内容转为 64 位有符号整数读取,仅支持文本节点object ReadElementContentAsObject();将当前文本内容转为 Object 返回,仅支持有内容的元素节点string ReadElementContentAsString();将当前文本内容转为 String 对象返回,仅支持有内容的元素节点bool ReadElementContentAsBoolean();将当前文本内容转为 Boolean 对象返回,仅支持有内容的元素节点DateTime ReadElementContentAsDateTime();将当前文本内容转为 DateTime 对象返回仅支持有内容的元素节点decimal ReadElementContentAsDecimal();将当前文本内容转为 Decimal 对象返回,仅支持有内容的元素节点double ReadElementContentAsDouble();将当前文本内容转为 双精度浮点数 对象返回,仅支持有内容的元素节点float ReadElementContentAsFloat();将当前文本内容转为 单精度浮点数 对象返回,仅支持有内容的元素节点int ReadElementContentAsInt();将当前文本内容转为 32 位有符号整数返回,仅支持有内容的元素节点long ReadElementContentAsLong();将当前文本内容转为 64 位有符号整数返回,仅支持有内容的元素节点代码演示由于内容太多这里只演示代码不截图运行结果属性和方法的细节都会在代码中进行解释。演示用的XML文档如下?xml version1.0 encodingutf-8?
bookstorebook Type必修课 ISBN7-111-19149-2 xmlnshttps://www.csdn.net/title数据结构/titleauthor严蔚敏/authorprice30.00/price/bookbook Type必修课 ISBN7-111-19149-3title路由型与交换型互联网基础/titleauthor程庆梅/authorprice27.00/price/bookbook Type必修课 ISBN7-111-19149-4title计算机硬件技术基础/titleauthor李继灿/authorprice25.00/price/bookbook Type必修课 ISBN7-111-19149-5title软件质量保证与管理/titleauthor朱少民/authorprice39.00/price/bookbook Type必修课 ISBN7-111-19149-6title算法设计与分析/titleauthor王红梅/authorprice23.00/price/bookbook Type选修课 ISBN7-111-19149-1title计算机操作系统/titleauthor7-111-19149-1/authorprice28/price/book
/bookstore温馨提示直接运行代码编译器会卡死请有选择性的注释掉部分代码再运行using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;namespace XML操作
{class Program{static void Main(string[] args){XmlTextReaderTest();Console.WriteLine(~~~~~~~~ END ~~~~~~~~);Console.ReadKey();}/// summary/// 一个简单输出方法/// /summarystatic void C(string str, object obj){Console.WriteLine(n {0}: {1}, str, obj);Console.WriteLine( ------------------------------);}static void C(int i, string str){Console.WriteLine( {0}.{1}, i, str);}static string filePath3 C:UsersAdministratorDesktopTemptest3.xml;/// summary/// XmlTextReader 测试用主函数/// /summarystatic void XmlTextReaderTest(){XmlTextReader textReader new XmlTextReader(filePath3);textReader.WhitespaceHandling WhitespaceHandling.None;while (textReader.Read()){if (textReader.NodeType XmlNodeType.Element){XmlAttribute(textReader);XmlMethod(textReader);}if (textReader.NodeType XmlNodeType.Text){XmlAttribute(textReader);XmlMethod(textReader);}if (textReader.NodeType XmlNodeType.EndElement){XmlAttribute(textReader);XmlMethod(textReader);}}//读取完毕后要记得关闭流否则会占用文档无法被其它线程打开textReader.Close();}/// summary/// XmlTextReader 属性/// /summarystatic void XmlAttribute(XmlTextReader textReader){Console.WriteLine(/);C(1, 获取或设置一个值该值指定如何处理空白区域);//该属性可以在读取器读取XML文档时控制是否读取空白区域//一般是在构造好以后进行设置在读取时设置也可以但是在设置以前已经读取的内容还是会读取到空白区域WhitespaceHandling whitespaceHandling textReader.WhitespaceHandling;C(whitespaceHandling, whitespaceHandling);C(2, 获取当前节点的地址);//如果是网络XML就会获取到网络地址string baseURI textReader.BaseURI;C(baseURI, baseURI);C(3, 获取读取器定位在的节点的命名空间 URI);//该属性用于获取网络XML的节点网络地址//该地址的属性命名必须是 xmlns否则无法读取地址string namespaceURI textReader.NamespaceURI;C(namespaceURI, namespaceURI);C(4, 获取文档的编码);Encoding encoding textReader.Encoding;C(encoding, encoding);C(5, 获取XML文档中当前节点的深度);//这里的深度指的是节点的层级根节点是0元素节点是1元素节点子级是2以此类推int depth textReader.Depth;C(depth, depth);C(6, 获取当前行号);//指在XML文件中所在的行数int lineNumber textReader.LineNumber;C(lineNumber, lineNumber);C(7, 获取当前行位置);//指该标签在当前行的起始下标也就是第一个字母的横向坐标int linePosition textReader.LinePosition;C(linePosition, linePosition);C(8, 判断读取器是否定位在流结尾);//很好理解当读取完所有值时读取器就会在流的结尾处//只有在While循环完毕后指针才会在流的结尾处在循环体内时并不会在结尾bool eOF textReader.EOF;C(eOF, eOF);C(9, 获取当前节点的类型);XmlNodeType nodeType textReader.NodeType;C(nodeType, nodeType);C(10, 获取当前节点的文本值);//只能获取 XmlNodeType 类型为 Text 类型的节点的文本值string value textReader.Value;C(value, value);C(11, 判断当前节点是否为空元素);//没有文本内容以及子级的元素就是空元素空元素可以有属性bool isEmptyElement textReader.IsEmptyElement;C(isEmptyElement, isEmptyElement);C(12, 判断是否规范化空白区域和属性值);bool normalization textReader.Normalization;C(normalization, normalization);C(13, 获取当前节点的本地名称);//经过多次测试LocalName和Name我依然分不清有啥区别//求高人指点string localName textReader.LocalName;C(localName, localName);C(14, 获取当前节点的限定名称);string name textReader.Name;C(name, name);C(15, 获取指定索引处属性的值(XmlReader));//如果指定索引位置没有属性运行时会报错try{string item textReader[0];C(item[int], item);}catch (Exception){Console.WriteLine( 无属性可索引 n);}C(16, 获取具有指定LocalName和NamespaceURI的属性的值(XmlReader));//索引无效时会返回null不会报错//看似索引也没问题不知为何就是返回null//求高人指点string item2 textReader[book, xmlns];if (item2 null){C(item[string, string], null);}else{C(item[string, string], item2);}C(17, 获取具有指定Name的属性的值(XmlReader));//索引无效时会返回null不会报错string item3 textReader[Type];if (item3 null){C(item[string], null);}else{C(item[string], item3);}C(18, 判断当前节点是否有任何属性(XmlReader));bool hasAttributes textReader.HasAttributes;C(hasAttributes, hasAttributes);C(19, 获取当前节点上的属性数目);int attributeCount textReader.AttributeCount;C(attributeCount, attributeCount);C(20, 获取与当前节点关联的命名空间前缀);string prefix textReader.Prefix;C(prefix, prefix);C(21, 获取用于括起属性节点的值的引号字符);//经过测试无论是单引号还是双引号都是输出双引号//耐人寻味呢char quoteChar textReader.QuoteChar;C(quoteChar, quoteChar);C(22, 获取读取器的状态);//读取器状态为枚举类型主要用来判断当前读取进度或者状态//例如正在读取读取报错关闭读取读取完毕等ReadState readState textReader.ReadState;C(readState, readState);C(23, 获取用于创建此XmlReader实例的XmlReaderSettings对象(XmlReader));//XmlReaderSettings用来设置XML读取方式要配合XmlReader使用XmlReaderSettings settings textReader.Settings;C(settings, settings);C(24, 获取当前节点的公共语言运行时类型(XmlReader));Type valueType textReader.ValueType;C(valueType, valueType);C(25, 获取当前 xml:lang 范围);//string xmlLang textReader.XmlLang;C(xmlLang, xmlLang);C(26, 获取当前 xml:space 范围);//XmlSpace xmlSpace textReader.XmlSpace;C(xmlSpace, xmlSpace);C(27, 判断当前节点是否可以具有 String.Empty 以外的 Value);bool hasValue textReader.HasValue;C(hasValue, hasValue);C(28, 获取或设置是否进行命名空间支持);bool namespaces textReader.Namespaces;C(namespaces, namespaces);C(29, 判断节点是否实现二进制内容读取方法);bool canReadBinaryContent textReader.CanReadBinaryContent;C(canReadBinaryContent, canReadBinaryContent);C(30, 判断节点是否实现 ReadValueChunk(Char[], Int32, Int32) 方法);bool canReadValueChunk textReader.CanReadValueChunk;C(canReadValueChunk, canReadValueChunk);C(31, 判断读取器是否可以分析和解析实体);//bool canResolveEntity textReader.CanResolveEntity;C(canResolveEntity, canResolveEntity);C(32, 获取或设置一个值该值指定读取器处理实体的方式);//EntityHandling entityHandling textReader.EntityHandling;C(entityHandling, entityHandling);C(33, 获取与此实现关联的 XmlNameTable);XmlNameTable nameTable textReader.NameTable;C(nameTable, nameTable);Console.WriteLine(*******************************);}/// summary/// XmlTextReader 方法/// /summarystatic void XmlMethod(XmlTextReader textReader){Console.WriteLine(///);Console.WriteLine(整个Reader的操作);//关闭流并释放资源textReader.Close();//释放当前使用的所有资源 (XmlReader)textReader.Dispose();//获取当前节点外XML的剩余部分返回TextReaderusing (TextReader text textReader.GetRemainder()){StringBuilder stringBuilder new StringBuilder(text.ReadToEnd());Console.WriteLine(stringBuilder);}Console.WriteLine(///);Console.WriteLine(节点之间的操作);//从流中读取下一个节点调用一次就只会读取一次//Read()的读取方式是一个节点一个节点的读取并不是一次性读完一整行//比如 title数据结构/title这里会分为三次读取,读取步骤如下//1.title(开始元素节点Element)//2.数据结构(文本节点Text)//3./title(结束元素节点EndElement)bool read textReader.Read();C(read, read);C(read, textReader.Name);//跳过 非内容节点 至下一个 内容节点//内容节点非空节点TextCDATAElementEndElementEntityReferenceEndEntityXmlNodeType moveToContent textReader.MoveToContent();C(moveToContent, moveToContent);//跳过非内容节点判断当前节点是否为指定元素的开始节点bool isStartElement textReader.IsStartElement(price);C(isStartElement, isStartElement);//跳过Element节点至下一个节点(XmlReader)//当前节点必须是Element类型否则会报错textReader.ReadStartElement();//跳过 指定元素开始节点 至下一个节点(XmlReader)//当前节点必须是指定的元素同时必须是开始节点否则会报错textReader.ReadStartElement(book);//跳过EndElement节点至下一个节点(XmlReader)//当前节点必须是EndElement类型否则会报错textReader.ReadEndElement();//跳到第一个具有指定限定名的子代元素(XmlReader)//并且只有该指定子级会被完整读取所有节点//下一行开始所有子级只读取元素节点不读取文本节点textReader.ReadToDescendant(price);//一直读取直到找到所有具有指定限定名的元素(XmlReader)//该过程会跳过所有非指定元素节点并且匹配到的是开始标签不会匹配到结束标签//如果存在相同的元素节点那么会继续跳过其它所有节点获取指定元素//特别注意的是如果找不到对应名称的节点那么就会直接读到结尾并且节点为nulltextReader.ReadToFollowing(title);C(petId, textReader.ReadString());//一直读取前进到下一个具有指定限定名的同级元素(XmlReader)//需要先把指针定位在指定元素的深度该方法只会在同一深度的标签中查找具有指定name的下一个元素//如果该深度不存在指定元素那么会直接结束textReader.ReadToNextSibling(title);//将读取器的状态重置为 ReadState.Initial//该方法会停止Read方法读取数据如果是在循环过程中使用会报错textReader.ResetState();Console.WriteLine(///);Console.WriteLine(单个节点的操作);//获取具有指定索引的属性的值string getAttribute_int textReader.GetAttribute(0);C(GetAttribute(int), getAttribute_int);//获取具有指定属性名称的属性值string getAttribute_string textReader.GetAttribute(ISBN);C(GetAttribute(string), getAttribute_string);//获取一个集合该集合包含当前在范围内的所有命名空间IDictionarystring, string getNamespacesInScope textReader.GetNamespacesInScope(XmlNamespaceScope.All);foreach (var item in getNamespacesInScope.Keys){C(GetNamespacesInScope[key], item);C(GetNamespacesInScope[value], getNamespacesInScope[item]);}//移动到具有指定索引的属性//通过int索引时如果该节点没有属性会报错try{textReader.MoveToAttribute(0);}catch (Exception) { }//移动到具有指定名称的属性//使用string索引时没有属性不会报错返回bool值确定是否存在指定顺序性textReader.MoveToAttribute(Type);//判断指针是否移动到属性节点//该方法无法移动指针只能判断当前指针是否在属性节点上textReader.MoveToElement();//移动到第一个属性textReader.MoveToFirstAttribute();//移动到下一个属性//如果当前指针不在属性上则移动到第一个属性如果在属性上则移动到下一个属性textReader.MoveToNextAttribute();//将属性值分析为一个或多个 Text、EntityReference 或 EndEntity 节点//指针必需移动到属性节点上textReader.ReadAttributeValue();//读取纯文本元素//1.如果该节点没有文本运行会报错//2.使用try/catch可以跳过报错如果不使用string指定标签指针还会跳到下一个有文本的节点上为啥呢try{string readElementString textReader.ReadElementString();C(readElementString, readElementString);}catch (Exception) { }//读取当前节点以下的所有内容包括标记和子级(XmlReader)//该方法不包括读取自身内容C(ReadInnerXml, textReader.ReadInnerXml());//读取当前节点和所有它的子级的内容包括标记(XmlReader)//该方法包括读取自身内容C(ReadOuterXml, textReader.ReadOuterXml());//读取文本节点的内容C(ReadString, textReader.ReadString());//返回新的 XmlReader 实例此实例可用于读取当前节点及其所有子节点(XmlReader)//只能在元素节点上调用该方法C(ReadSubtree, textReader.ReadSubtree());//跳过当前节点的子级textReader.Skip();Console.WriteLine(///);Console.WriteLine(不常用的单个节点的操作);//将元素的文本内容读入字符缓冲区 通过连续调用此方法可以读取大的嵌入文本的流char[] ch new char[1024];int readChars textReader.ReadChars(ch, 0, ch.Length);Console.WriteLine(readChars);Console.WriteLine(ch);//读取嵌入在 XML 文档中的大量文本流(XmlReader)//提示不支持该方法char[] ch2 new char[1024];int readValueChunk textReader.ReadValueChunk(ch2, 0, ch2.Length);//将当前文本内容转为 String 对象读取(XmlReader),仅支持文本节点string readContentAsString textReader.ReadContentAsString();Console.WriteLine(ReadContentAsString: {0}, readContentAsString);//将当前文本内容转为 Object 对象读取(XmlReader),仅支持文本节点var readContentAsObject textReader.ReadContentAsObject();Console.WriteLine(ReadContentAsObject: {0}, readContentAsObject);//将当前文本内容转为 Boolean 对象读取(XmlReader),仅支持文本节点//文本内容必须为读取类型的值才能读取必须是 true/false否则会报错var readContentAsBoolean textReader.ReadContentAsBoolean();Console.WriteLine(ReadContentAsBoolean: {0}, readContentAsBoolean);//将当前文本内容转为 DateTime 对象读取(XmlReader),仅支持文本节点//规则同上DateTime readContentAsDateTime textReader.ReadContentAsDateTime();Console.WriteLine(ReadContentAsDateTime: {0}, readContentAsDateTime);//将当前文本内容转为 DateTimeOffset 对象读取(XmlReader),仅支持文本节点//规则同上var readContentAsDateTimeOffset textReader.ReadContentAsDateTimeOffset();Console.WriteLine(ReadContentAsDateTimeOffset: {0}, readContentAsDateTimeOffset);//将当前文本内容转为 Decimal 对象读取(XmlReader),仅支持文本节点//规则同上var readContentAsDecimal textReader.ReadContentAsDecimal();Console.WriteLine(ReadContentAsDecimal: {0}, readContentAsDecimal);//将当前文本内容转为 双精度浮点数 对象读取(XmlReader),仅支持文本节点//规则同上var readContentAsDouble textReader.ReadContentAsDouble();Console.WriteLine(ReadContentAsDouble: {0}, readContentAsDouble);//将当前文本内容转为 单精度浮点数 对象读取(XmlReader),仅支持文本节点//规则同上var readContentAsFloat textReader.ReadContentAsFloat();Console.WriteLine(ReadContentAsFloat: {0}, readContentAsFloat);//将当前文本内容转为 32 位有符号整数读取(XmlReader),仅支持文本节点//规则同上var readContentAsInt textReader.ReadContentAsInt();Console.WriteLine(ReadContentAsInt: {0}, readContentAsInt);//将当前文本内容转为 64 位有符号整数读取(XmlReader),仅支持文本节点//规则同上var readContentAsLong textReader.ReadContentAsLong();Console.WriteLine(ReadContentAsLong: {0}, readContentAsLong);//将当前文本内容转为 Object 返回(XmlReader),仅支持有内容的元素节点//读取时无法读取注释且该节点不能包含子级读取完以后指针会指向下个节点var readElementContentAsObject textReader.ReadElementContentAsObject();Console.WriteLine(ReadElementContentAsObject: {0}, readElementContentAsObject);//将当前文本内容转为 String 对象返回(XmlReader),仅支持有内容的元素节点//读取时无法读取注释且该节点不能包含子级读取完以后指针会指向下个节点var readElementContentAsString textReader.ReadElementContentAsString();Console.WriteLine(ReadElementContentAsString: {0}, readElementContentAsString);//将当前文本内容转为 Boolean 对象返回(XmlReader),仅支持有内容的元素节点//1.文本内容必须为读取类型的值才能读取//2.读取时无法读取注释且该节点不能包含子级//3.读取完以后指针会指向下个节点var readElementContentAsBoolean textReader.ReadElementContentAsBoolean();Console.WriteLine(ReadElementContentAsBoolean: {0}, readElementContentAsBoolean);//将当前文本内容转为 DateTime 对象返回(XmlReader),仅支持有内容的元素节点//规则同上var readElementContentAsDateTime textReader.ReadElementContentAsDateTime();Console.WriteLine(ReadElementContentAsDateTime: {0}, readElementContentAsDateTime);//将当前文本内容转为 Decimal 对象返回(XmlReader),仅支持有内容的元素节点//规则同上var readElementContentAsDecimal textReader.ReadElementContentAsDecimal();Console.WriteLine(ReadElementContentAsDecimal: {0}, readElementContentAsDecimal);//将当前文本内容转为 双精度浮点数 对象返回(XmlReader),仅支持有内容的元素节点//规则同上var readElementContentAsDouble textReader.ReadElementContentAsDouble();Console.WriteLine(ReadElementContentAsDouble: {0}, readElementContentAsDouble);//将当前文本内容转为 单精度浮点数 对象返回(XmlReader),仅支持有内容的元素节点//规则同上var readElementContentAsFloat textReader.ReadElementContentAsFloat();Console.WriteLine(ReadElementContentAsFloat: {0}, readElementContentAsFloat);//将当前文本内容转为 32 位有符号整数返回(XmlReader),仅支持有内容的元素节点//规则同上var readElementContentAsInt textReader.ReadElementContentAsInt();Console.WriteLine(ReadElementContentAsInt: {0}, readElementContentAsInt);//将当前文本内容转为 64 位有符号整数返回(XmlReader),仅支持有内容的元素节点//规则同上var readElementContentAsLong textReader.ReadElementContentAsLong();Console.WriteLine(ReadElementContentAsLong: {0}, readElementContentAsLong);Console.WriteLine(*******************************);}}
}