当前位置:
开发笔记 >
Android > 正文
在.NETFramework中轻松处理XML数据(5-1)
作者:风云a899 | 来源:互联网 | 2014-05-04 00:08
??设计XmlReadWriter类??如前面所说,XMLreader和Writer是各自独立工作的:reader只读,writer只写。假设你的利用程序要治理冗长的XML文档,且该文档有不断定的数据。Reader供给了一个很
??设计XmlReadWriter类 ??如前面所说,XML reader和Writer是各自独立工作的:reader只读,writer只写。假设你的利用程序要治理冗长的XML文档,且该文档有不断定的数据。Reader供给了一个很好的方法往读该文档的内容。另一方面,Writer是一个非常有用的用于创立XML文档片段工具,但是假如你想要它即能读,又能写,那么你就要用XMLDOM了。假如实际的XML文档非常宏大,又会呈现了一个标题,什么标题呢?是不是把这个XML文档全部加载到内存中,然落后行读和写呢?让我们先看一下怎么样建立一个混杂的流分析器用于分析大型的XMLDOM。 ??像一般的只读把持一样,用普通的XML reader往次序的拜访节点。不同的是,在读的同时你可以用XML writer转变属性值以及节点的内容。你用reader往读源文件中的每个节点,后台的writer创立该节点的一个拷贝。在这个拷贝中,你可以增加一些新的节点,疏忽或者编纂其它的一些节点,还可以编纂属性的值。当你完成修正后,你就用新的文档调换旧的文档。 ??一个简略有效的措施是从只读流中拷贝节点对象到write流中,这种方法可以用XmlTextWriter类中的两个方法:WriteAttributes方法和WriteNode方法。 WriteAttributes方法读取当前reader中选中的节点的所有有效的属性,然后把属性当作一个单独的string拷贝到当前的输出流中。同样的,WriteNode方法用类似的方法处理除属性节点外的其它类型的节点。图十所示的代码片段演示了怎么用上述的两个方法创立一个源XML文档的拷贝,有选择的修正某些节点。XML树从树根开端被拜访,但只输出了除属性节点类型以外的其它类型的节点。你可以把Reader和Writer整合在一个新的类中,设计一个新的接口,使它能读写流及拜访属性和节点。 Figure 10 Using the WriteNode Method XmlTextReader reader = new XmlTextReader(inputFile); XmlTextWriter writer = new XmlTextWriter(outputFile); // 配置 reader 和 writer writer.Formatting = Formatting.Indented; reader.MoveToContent(); // Write根节点 writer.WriteStartElement(reader.LocalName); // Read and output every other node int i=0; while(reader.Read()) { if (i % 2) writer.WriteNode(reader, false); i ; } // Close the root writer.WriteEndElement(); // Close reader and writer writer.Close(); reader.Close(); ??我的XmlTextReadWriter类并没有从XmlReader或者XmlWriter类中持续。取而代之的是另外两个类,一个是基于只读流(stream)的把持类,另一个是基于只写流的把持类。XmlTextReadWriter类的方法用Reader对象读数据,写进到Writer对象。为了适应不同的需求,内部的Reader和Writer 对象分辨通过只读的Reader和Writer属性公然。图十一列出了该类的一些方法: Figure 11 XmlTextReadWriter Class Methods Method Description AddAttributeChange Caches all the information needed to perform a change on a node attribute. All the changes cached through this method are processed during a successive call to WriteAttributes. Read Simple wrapper around the internal reader's Read method. WriteAttributes Specialized version of the writer's WriteAttributes method, writes out all the attributes for the given node, taking into account all the changes cached through the AddAttributeChange method. WriteEndDocument Terminates the current document in the writer and closes both the reader and the writer. WriteStartDocument Prepares the internal writer to output the document and add a default comment text and the standard XML prolog. ??这个新类有一个Read方法,它是对Reader的read方法的一个简略的封装。另外,它供给了WriterStartDocument和WriteEndDocument方法。它们分辨初始化/开释(finalize)了内部Reader和writer对象,还处理所有I/O把持。在循环读节点的同时,我们就可以直接的修正节点。出于性能的原因,要修正属性必需先用AddAttributeChange方法声明。对一个节点的属性所作的所有修正都会存放在一个临时的表中,最后,通过调用WriteAttribute方法提交修正,清除临时表。
推荐阅读
本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ...
[详细]
蜡笔小新 2024-12-27 21:33:33
本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ...
[详细]
蜡笔小新 2024-12-27 21:20:10
本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ...
[详细]
蜡笔小新 2024-12-27 11:39:44
本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ...
[详细]
蜡笔小新 2024-12-27 10:34:22
RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ...
[详细]
蜡笔小新 2024-12-26 20:24:01
本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ...
[详细]
蜡笔小新 2024-12-26 17:21:54
本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ...
[详细]
蜡笔小新 2024-12-26 11:46:55
本文详细介绍了如何解决MyBatis中常见的BindingException错误,提供了多种排查和修复方法,确保Mapper接口与XML文件的正确配置。 ...
[详细]
蜡笔小新 2024-12-25 19:42:47
SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ...
[详细]
蜡笔小新 2024-12-25 19:26:39
在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ...
[详细]
蜡笔小新 2024-12-25 18:48:34
本文探讨了在通过 API 端点调用时,使用猫鼬(Mongoose)的 findOne 方法总是返回 null 的问题,并提供了详细的解决方案和建议。 ...
[详细]
蜡笔小新 2024-12-25 17:40:33
探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ...
[详细]
蜡笔小新 2024-12-25 13:38:29
本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ...
[详细]
蜡笔小新 2024-12-25 10:33:17
本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ...
[详细]
蜡笔小新 2024-12-24 19:21:28
本文详细介绍了Java Web应用程序中的过滤器(Filter)功能,包括其作用、实现方式及配置方法。过滤器可以在请求到达目标资源之前对其进行预处理,并在响应返回给客户端之前进行后处理。 ...
[详细]
蜡笔小新 2024-12-24 17:57:57