我爱Aspx >> XML/XLST >> 在.NET Framework中轻松处理XML数据(五)如前面所说,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();
【我对这篇文章有话说?】
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
Visual Basic.NET带来的新方法(一..[05-05]
利用VC++获取异构型数据库库结构..[05-05]
抢救零磁道损坏的软盘数据[05-05]
浅谈DB2数据库的备份与恢复(下)[05-05]
浅谈DB2数据库的备份与恢复(上)[05-05]
Microsoft .NET Remoting:技术概..[05-05]
ASP.NET 入门的五个步骤[05-05]
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
系统级C语言程序设计[05-05]
Visual Basic.NET带来的新方法(一..[05-05]
用VB设计能适应各种显示属性的界..[05-05]
关于VC中的DLL的编程[05-05]
解决BoundsChecker和VC打架的方法[05-05]
用VC++实现异形窗口.[05-05]
MFC消息响应机制分析[05-05]