• 您的位置我爱Aspx >> XML/XLST >> 在.NET Framework中轻松处理XML数据(五)
  • 在.NET Framework中轻松处理XML数据(五)

  • 作者:aspxer  来源:internet  日期:2007-5-6 11:38:44  关键字:.net,xml,数据
  • 设计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();

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:一个简单的XML Schema的例子
    下一篇:在.NET Framework中轻松处理XML数据(四)